我正在使用Laravel 4.2框架(很快就会升级)并从控制器调用artisan
命令并返回重定向。
我的问题是当我调用命令时,命令echo
给我一些东西(当我从终端调用它时很有用)但现在因为我在方法中使用它,我想要相同的{ {1}}在我的视图中显示为Flash消息。
我将编写以下示例,以澄清我的问题。
我的命令:
echos
我的控制器:
public function fire()
{
// Do stuff.
echo $vars
}
所以我想在我的观点中显示function foo() {
// Some input here
Artisan::call('command');
return Redirect::back(); // <-- want to add the echos of the command.
}
,我不确定它是否可能,如果不是可以接受可以给我相同概念的其他建议(请记住,如果我更换了$var
当我运行命令时,它会在视图和终端中显示其他内容。)
注意:我尝试过Ajax,但我的问题是我发送了一个文件作为参数,尝试了FormData对象,但它并没有与我合作。
答案 0 :(得分:2)
在会话中存储数据是在多个请求中保留持久数据的好方法。会话闪烁是一种仅为下一个请求保留数据的方法,非常适合重定向。当出现验证错误时,Laravel会在内部使用此输入数据。
https://laravel.com/docs/4.2/session#flash-data
Session::flash('key', 'value');
这只会在下一个请求中保留,您可以使用Session::get('key')
来检索它。
答案 1 :(得分:0)
我通过改变命令来解决问题。
<强>命令:强>
function fire()
{
// replaced the echo with the following.
$this->info('what ever you want ur message you want to put in console');
}
<强>控制器强>
function foo()
{
$output = new BufferedOutput();
Artisan::call('command', [arguments], $output);
return Redirect::back()->with('flash_message', $output->fetch());
}
猜测缓冲输出是否适用于Laravel Documentations而不是echo's