php – Laravel表单请求:调用坏方法
发布时间:2020-12-14 19:37:04 所属栏目:大数据 来源:网络整理
导读:当我使用带有Post方法的Form Request时,响应是“index()”方法响应.但它必须是“store(myRequest $request)”方法. 如果我从“store()”中删除myRequest $request方法,它就可以了.我迷路了.请帮帮我. 我的控制器: ?php namespace AppHttpControllersRess
当我使用带有Post方法的Form Request时,响应是“index()”方法响应.但它必须是“store(myRequest $request)”方法.
如果我从“store()”中删除myRequest $request方法,它就可以了.我迷路了.请帮帮我. 我的控制器: <?php namespace AppHttpControllersRessource; use AppHttpRequestsCreateCollectionRequest; use AppRepositoriesCollectionRepository; class CollectionController extends RessourceController { private $collectionRepository; public function __construct(CollectionRepository $collectionRepository) { parent::__construct(); $this->collectionRepository = $collectionRepository; } public function index() { return $this->run( function() { return $this->collectionRepository->all()->get(); }); } public function store(CreateCollectionRequest $request) { return $this->run( function() use ($request) { return $this->collectionRepository->create($request->all()); }); } } RessourceController: <?php namespace AppHttpControllersRessource; use IlluminateSupportFacadesResponse; use AppHttpControllersController; abstract class RessourceController extends Controller { protected $result = null; public function __construct() { $this->result = new stdClass(); $this->result->error = 0; $this->result->message = ''; $this->result->service = $this->getService(); $this->result->data = null; } abstract public function getService(); protected function render() { return Response::json($this->result); } public function missingMethod($parameters = []) { $this->result->err = 404; $this->result->message = 'Service ' . $this->getService() . ' : ' . $parameters . ' non disponible'; return $this->render(); } protected function run($function) { try { $this->result->data = call_user_func($function); } catch (Exception $e) { $this->result->err = ($e->getCode() > 0) ? $e->getCode() : -1; $this->result->message = $e->getMessage(); } return $this->render(); } } 自定义表格请求: namespace AppHttpRequests; use AppHttpRequestsRequest; class CreateCollectionRequest extends Request { public function authorize() { return true; } public function rules() { return [ 'label' => 'required|alpha_num|min:3|max:32','description' => 'alpha_dash|max:65000','parent_collection_id' => 'exists:collections,id' ]; } } 从routes.php中提取: Route::group(array('namespace' => 'Ressource','prefix' => 'ressource'),function () { Route::resource('collection','CollectionController',['only' => ['index','show','store','update','destroy']]); }); 邮差要求: 邮差响应: 解决方法
你应该让你的功能成为Clouse功能.
我的控制器: use AppHttpRequestsCreateCollectionRequest; use AppRepositoriesCollectionRepository; use SuperClosureSerializer; use IlluminateSupportStr; use Closure; class CollectionController extends RessourceController { private $collectionRepository; public function __construct(CollectionRepository $collectionRepository) { parent::__construct(); $this->collectionRepository = $collectionRepository; } public function index() { return $this->run( function() { return $this->collectionRepository->all()->get(); }); } protected function buildCallable($callback) { if (! $callback instanceof Closure) { return $callback; } return (new Serializer)->serialize($callback); } public function store(CreateCollectionRequest $request) { $callback = function() use ($request) { return $this->collectionRepository->create($request->all()); } return $this->run($this->buildCallable($callback)); } } RessourceController: <?php namespace AppHttpControllersRessource; use IlluminateSupportFacadesResponse; use AppHttpControllersController; use SuperClosureSerializer; use IlluminateSupportStr; use Closure; abstract class RessourceController extends Controller { protected $result = null; public function __construct() { $this->result = new stdClass(); $this->result->error = 0; $this->result->message = ''; $this->result->service = $this->getService(); $this->result->data = null; } abstract public function getService(); protected function render() { return Response::json($this->result); } public function missingMethod($parameters = []) { $this->result->err = 404; $this->result->message = 'Service ' . $this->getService() . ' : ' . $parameters . ' non disponible'; return $this->render(); } protected function getCallable($callback) { if (Str::contains($callback,'SerializableClosure')) { return unserialize($callback)->getClosure(); } return $callback; } protected function run($function) { try { $this->result->data = call_user_func($this->getCallable($function)); } catch (Exception $e) { $this->result->err = ($e->getCode() > 0) ? $e->getCode() : -1; $this->result->message = $e->getMessage(); } return $this->render(); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |