我有一条路线:
.../first
以下调用函数:
function first() {
$data['first'] = 1;
return response()->json($data);
}
然后我正在研究新路线:
.../second
这个电话:
function second() {
...
if ($condition) {
return redirect()->to('.../first');
}
}
这是回归:
{
"first": 1
}
我想得到一个结果,当我调用second()函数时,看起来像:
{
"first": 1,
"second" : 2
}
我该怎么做,我正在尝试将密钥second
放到redirect()(Cannot use object of type Illuminate\Http\RedirectResponse as array
)的响应中
,以及检查条件:
function first() {
$data['first'] = 1;
if (Request::is('.../second') {
$data['second'] = 2; // but this never execute,request now is ".../first"
}
return response()->json($data);
}
任何人都可以帮助我吗?谢谢你的阅读。
答案 0 :(得分:1)
如果first()
和second()
位于同一个控制器中,您可以在类定义中声明数据。
class ...
{
var $data;
function first() {
$this->data['first'] = 1;
return response()->json($this->data);
}
function second() {
if ($condition) {
$this->data['second'] = 2;
return $this->first(); // No redirect
}
...
}
如果上述解决方案无论如何都不可行,请在路由定义中为first()
保留一个可选参数。
Route::get('/first/{data?}', 'SomeController@first')->name('first');
参考 - https://laravel.com/docs/5.2/routing#route-parameters
然后,您可以使用first()
函数中的数据重定向到second()
。
function second() {
if ($condition) {
return redirect()->route('first', ['data' => ['second' => 2]]);
}
...
}
现在,收到的参数可以轻松地合并到您的first()
功能中。
function first($data = []) {
$data['first'] = 1;
return response()->json($data);
}