我有两个控制器(工作流和舞台),我需要使用我创建的请求对象从Stage.store
函数路由到Workflow.store
函数:
工作流程控制器:
public function store(WorkflowRequest $request)
{
$oWorkflow = new WfWorkflow();
$oWorkflow->name = $request->get('workflow_name');
if($oWorkflow->save()){
$aStages = $request->get('wf_stage');
$params = [
'_token' => $request->get('_token'),
'wf_id' => $oWorkflow->id,
'stages' => $aStages
];
$oStageRequestObject = Request::create(url('stage'), 'POST', $params);
}
}
现在,我如何使用Request对象$oStageRequestObject
使用POST方法路由到stage.store
?
stage.store
我需要使用表单请求验证。答案 0 :(得分:2)
$params = [
'_token' => $request->get('_token'),
'wf_id' => $oWorkflow->id,
'stages' => $aStages
];
您希望使用POST方法发送此$ params变量以路由到stage.store。
为此您可以设置会话。
对于前。
在Workflow.store方法中设置这样的会话。
Session(['param' => $params]);
现在,您可以使用POST方法在stage.store方法中访问此会话。
答案 1 :(得分:1)
如果要重用stage.store
逻辑,那么我建议创建处理此逻辑的StageService
服务类。所以StageController
看起来像这样:
public function store(Requests\StoreStageRequest $request, StageService $stageService)
{
$stageService->handleRequest($request); // put controller logic to this function
return redirect('/somewere');
}
然后在WorkflowController
中,您可以手动创建StoreStageRequest
请求并将其传递给handleRequest()
:
public function store(WorkflowRequest $request, StageService $stageService)
{
// ...
$params = [
'_token' => $request->get('_token'),
'wf_id' => $oWorkflow->id,
'stages' => $aStages
];
$oStageRequest = new Requests\StoreStageRequest($params);
$stageService->handleRequest($oStageRequest);
// ...
}
至于验证,认为唯一的方法是手动创建Validator,并传递给它数据和规则。
希望这有帮助。