是否可以在Laravel

时间:2019-01-07 04:09:14

标签: php laravel laravel-5

我从CF到PHP,特别是Laravel,所以我对这个基本问题深表歉意。

我在控制器中有一个功能:

public function search(
    $surveyId = 0
,   $sampleId = 0
,   $data = []
,   $dataSeg = 0
,   $returnLimit = 1000
,   $returnStartRow = 1
,   $sortOn = ""
,   $sortDir = ""
,   $previousData = []
){
   // bunch of code
}

我想知道是否可以像在cf中那样仅传递需要的特定变量?尝试做这样的事情:

    $myData = [
        "State" => "AZ"
    ];

    $allRecords = (new MyController)->search($surveyId=3762,$data=$myData,$sortOn="name");

如果在一次调用中我需要的唯一三个变量是SurveyId和data数组以及sortOn,我知道这在cf中是一个简单的过程,但是我找不到正确的方法在Laravel(php)中,甚至根本没有可能。顺便说一句,我正在使用Laravel 5.7

结果: 根据@Nguyen的回答,如果对其他人有帮助的话,我的控制器的开头看起来像什么:

public function search($params){
    // parameters that should be passed in 
    $surveyId = key_exists("surveyId", $params) ? $params['surveyId'] : 0;
    $sampleId = key_exists("sampleId", $params) ? $params['sampleId'] : 0;
    $data = key_exists("data", $params) ? $params['data'] : [];
    $dataSeg = key_exists("dataSeg", $params) ? $params['dataSeg'] : 0;
    $returnLimit = key_exists("returnLimit", $params) ? $params['returnLimit'] : 1000;
    $returnStartRow = key_exists("returnStartRow", $params) ? $params['returnStartRow'] : 1;
    $sortOn = key_exists("sortOn", $params) ? $params['sortOn'] : "";
    $sortDir = key_exists("sortDir", $params) ? $params['sortDir'] : "";
    $previousData = key_exists("previousData", $params) ? $params['previousData'] : [];
    // end parameters that should be passed in 

     ## logic code 
}

1 个答案:

答案 0 :(得分:2)

您不能按名称传递参数。如果需要,可以像这样将参数更改为数组:

public function search($param){
  // your code here
}
$allRecords = (new MyController)->search(["surveyId"=>3762,"data"=>$myData,"sortOn"=>"name"]);
相关问题