将函数中的变量返回到视图

时间:2014-11-11 20:26:47

标签: php laravel laravel-4

我是laravel 4中的新手,想要在按下按钮时返回从控制器到视图的值。

我的表单视图:

            {{ Form::submit('Save', array('class' => 'btn btn-small btn-info iframe')) }}
            <?php
            echo $test;
            ?>

我的控制器:

<?php
class TestController extends BaseController {


    /**
     * Start scrapping script.
     */
    public function postTest() {
        $scrap = 'It works!';

        return View::make ( 'admin/test/index' )->with('test', $test);
    }
}

我的路线:

Route::post('test', 'TestController@postTest');

但是,我得到了:

Undefined variable: test(View: C:\xampp\htdocs\laravel_project\lara\app\views\admin\test\index.blade.php) 

任何建议我做错了什么?

感谢您的回答!

更新

我现在改变了我的控制器:

public function getIndex() {

    // Show the page
    return View::make ( 'admin/test/index' );
}

public function postTest() {
    $test = 'It works!';

    return View::make ( 'admin/test/index' )->with('test', $test);
}

}

并添加到我的路线文件中:

Route::get('test', 'TestController@getIndex');
Route::post('test', 'TestController@postTest');
Route::controller('test', 'TestController');

此外,在致电时:

                {{ $test}}

我得到Undefined variable: $test

任何建议我做错了什么?

4 个答案:

答案 0 :(得分:1)

$scrap = "Something";
return View::make ( 'admin/test/index' )->with(array('test' => $scrap)); 

此外,在您看来,请务必检查$test是否确实存在。

{{ Form::submit() ... }}
@if(isset($test))
{{ $test }}
@endif

或(根据您的编辑)将getIndex更改为:

return View::make('admin/test/index')->with('test', '');

避免未定义的变量问题。

答案 1 :(得分:1)

更改为以下内容:

public function postTest() {

$test = 'It works!';
return View::make ( 'admin.test.index',['test' => $test] );

}

答案 2 :(得分:1)

将您的品牌改为:

return View::make ( 'admin/test/index' )->with(array('test' => $test));

此外,如果你看一下你的控制器,你赋予值的变量叫做$ scrap,而你分配给视图的变量叫做$ test,我想你的意思是给它们两个相同的名字(或者在视图上它总是空的。

答案 3 :(得分:1)

您应该更改控制器:

return View::make ( 'admin/test/index' )->with('test', $test);

为:

return View::make ( 'admin/test/index' )->with('test', $scrap);

现在您收到了未定义的警告,因为控制器中没有$test变量。

在Blade视图中,您应该使用以下方式显示它:

{{ $test }}

{{{ $test }}}

(第二个用于转义字符)而不是<?php echo $test; ?>