簡體   English   中英

如何在控制器Laravel中調用方法?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM