Можно ли передавать переменные по имени в Laravel - PullRequest
0 голосов
/ 07 января 2019

Я перешел с 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");

Я знаю, что это простой процесс в cf, если единственными тремя переменными, которые мне нужны для конкретного вызова, являются, в данном случае, surveyId, массив данных и sortOn, но я не могу найти правильный способ сделать это в 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 голосов
/ 07 января 2019

Нельзя передать параметр по имени. Если хотите, измените параметр на массив следующим образом:

public function search($param){
  // your code here
}
$allRecords = (new MyController)->search(["surveyId"=>3762,"data"=>$myData,"sortOn"=>"name"]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...