Параметры массива Laravel Pass для фильтрации

Мне нужно передать массив фильтру в конструкторе моего контроллера. Проблема в том, что для передачи параметров в фильтр вы делаете:

$this->beforeFilter('filterName:param1,param2');

И чтобы передать массив, мне нужно json_encode который делает массив в виде строки, разделенной запятой. Итак, следующая команда:

$array = ['this', 'that', 'other'];
$this->beforeFilter('filterName:' . json_encode($array));
// The above line basically becomes:
// $this->beforeFilter('filterName:["this","that","other"]');

передается в мой фильтр как:

Route::filter('filterName', function($route, $request, $param1, $param2, $param3)
{
// $param1 is ["this"// $param2 is "that"// $param3 is "other"]
});

Поскольку я не знаю, насколько велик мой массив, я не могу восстановить массив. Что я могу сделать?

Обновить

Я мог бы так

Route::filter('filterName', function($route, $request, $value)
{
$params = array_except(func_get_args(), array(0, 1));
if(count($params) > 3) {
$params = json_decode(implode(",", $params));

// Now use $params
}
});

Это отлично работает для массива. но если я передам встроенный массив, результат становится stdObjectЭто нормально, но мне не нравится тот факт, что я передал массив и получил объект.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]