[英]How do I call a method in my controller Laravel?
我有一個簡單的方法,該方法在控制器中定義。 我需要能夠從控制器中調用它
我的控制器代碼如下:
public function store(Request $request) {
$data = $request->except('_token');
$name = "form1_sections/" . $data['nextTab'] . "_form";
parse_str($data['inputs'], $output);
$rules = $this->call_user_func($data['currentTab']); //need to call section1()
//here if $data['currentTab'] is section1
$validator = Validator::make($output, $rules);
if ($validator->passes()) {
return ["view" => view("$name")->render(), "isValid" => true];
} else {
return ["isValid" => false, "msg" => json_encode([
'errors' => $validator->errors()->getMessages(),
'code' => 422
])
];
}
}
function section1() {
return [
'startDate' => 'required| date',
'endDate' => 'required| date|different:startDate',
'cv' => 'mimes:pdf,doc,docx'
];
}
//alo have section2(), section3() etc.
$ data ['currentTab']返回section1()的字符串。非常感謝您的幫助。
就像您在任何實例化類中一樣:
$foo = $this->section1();
現在$foo
包含您返回的數組。 您可能還應該將方法表示為protected
。
由於要動態地基於任意字符串調用方法,因此:
$foo = call_user_func('section1');
還是你的情況
$foo = call_user_func($data['currentTab']');
您不應在請求/響應周期之外調用控制器方法。 並制定了執行命令的時間表,例如inspire命令。
如果您有執行一條邏輯的控制器方法,請將此邏輯放在另一個類中。 然后將此新類注入您需要並使用的控制器操作中。
然后為要執行的任務創建命令。 在命令中注入相同的類,並使用它執行邏輯。
使用PHP artisan your_command_name
,一旦命令your_command_name
,您可以將其添加到計划中: $schedule->command('your_command_name')->hourly();
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.