Я создаю публичный API, используя Laravel 5.2. Чтобы сохранить код в кратко- и контроллера, я создал несколько вспомогательных функций, одна из которых является функция возвращает ответ на вызов API, как показано ниже:Laravel - ответ возврата от помощника
if (! function_exists('buildResponse'))
{
function buildResponse($data)
{
return response()->json($data)->header('foo', 'bar');
}
}
Это, как я назвал бы его от контроллер:
public function registration()
{
buildResponse(['a' => 'Success']);
}
Однако это не работает. Он работает, только если я добавлю return
перед функцией.
public function registration()
{
return buildResponse(['a' => 'Success']);
}
Можно сказать: "Хорошо, тогда просто включите return
!". Дело в том, эта конкретная функция будет вызвана другой вспомогательной функцией, например:
if (! function_exists('throwResponseCode'))
{
/**
* Throws a response code to the client.
* @param $code
* @return mixed
*/
function throwResponseCode($code)
{
switch ($code) {
case '101':
$data[$code] = 'Unable to establish a database connection';
return buildResponse($data);
// Other cases here
}
}
}
Есть ли способ, что я могу отправить ответ клиенту от вспомогательной функции?
Это _almost_ работает! Мне просто нужно, чтобы контроллер завершил выполнение после отправки ответа. Добавление 'die()' не завершает его, и я не думаю, что это элегантный способ отделки. – baskoros
Да. Вы не должны ничего делать после отправки ответа в браузер – KmasterYC