Laravel 4 Laravel视图::仅在一个控制器上共享未定义的变量

Laravel 4 Laravel视图::仅在一个控制器上共享未定义的变量,laravel-4,Laravel 4,我为所有视图共享从BaseController到主布局标题的一些变量。到目前为止,通过我制作的任何控制器,这对每个视图都有效 这是我得到的错误: Undefined variable: basket_lines (View: /var/www/vhosts/lsigifts.co.uk/app/views/layouts/master.blade.php) (View: /var/www/vhosts/lsigifts.co.uk/app/views/layouts/master.blade.p

我为所有视图共享从BaseController到主布局标题的一些变量。到目前为止,通过我制作的任何控制器,这对每个视图都有效

这是我得到的错误:

Undefined variable: basket_lines (View: /var/www/vhosts/lsigifts.co.uk/app/views/layouts/master.blade.php) (View: /var/www/vhosts/lsigifts.co.uk/app/views/layouts/master.blade.php) 
master.blade.php视图在任何其他页面上都没有给出此错误

我的BaseController:

class BaseController extends Controller {

    public function __construct()
    {
    // basket stuff to share on all templates       
        // how many different products are in there?
        $basket_lines = Cart::totalItems(true);
        View::share('basket_lines', $basket_lines);

        // what's the total ex vat?
        $basket_total_exvat = number_format(Cart::total(false), 2);
        View::share('basket_total_exvat', $basket_total_exvat);     

        // what's the total inc vat?
        $basket_total_vat = number_format(Cart::total(), 2);
        View::share('basket_total_vat', $basket_total_vat);
    }

    /**
     * Setup the layout used by the controller.
     *
     * @return void
     */
    protected function setupLayout()
    {
        if ( ! is_null($this->layout))
        {
            $this->layout = View::make($this->layout);
        }
    }

}
class SearchController extends \BaseController {

    /**
     * @var The SOLR client.
     */
    protected $client;

    /**
     * Constructor
     **/
    public function __construct()
    {
        // get config
        $solr_config = Config::get('solr');

        // create a client instance      
        $this->client = new \Solarium\Client($solr_config);
    }


    public function getIndex()
    {           
        /*$ping = $this->client->createPing();

        try {
            $result = $this->client->ping($ping);
            return var_dump($result);
        } catch (Solarium\Exception $e) {
            return 'hmmm';
        }*/

        if(Input::has('q')){
            // create the query
            $query = $this->client->createSelect();

            // set the string
            $query->setQuery('%P1%', array(Input::get('q')));

            // execute the query
            $resultset = $this->client->select($query);

            // create the view
            return View::make('search.index', [
                'q'         => Input::get('q'),
                'resultset' => $resultset
            ]);
        }

        return 'No search term';
    }

}
正如我所说,这会毫无问题地向所有视图提供内容。但是,此控制器不接受它:

路线:

Route::controller('search', 'SearchController');
搜索控制器:

class BaseController extends Controller {

    public function __construct()
    {
    // basket stuff to share on all templates       
        // how many different products are in there?
        $basket_lines = Cart::totalItems(true);
        View::share('basket_lines', $basket_lines);

        // what's the total ex vat?
        $basket_total_exvat = number_format(Cart::total(false), 2);
        View::share('basket_total_exvat', $basket_total_exvat);     

        // what's the total inc vat?
        $basket_total_vat = number_format(Cart::total(), 2);
        View::share('basket_total_vat', $basket_total_vat);
    }

    /**
     * Setup the layout used by the controller.
     *
     * @return void
     */
    protected function setupLayout()
    {
        if ( ! is_null($this->layout))
        {
            $this->layout = View::make($this->layout);
        }
    }

}
class SearchController extends \BaseController {

    /**
     * @var The SOLR client.
     */
    protected $client;

    /**
     * Constructor
     **/
    public function __construct()
    {
        // get config
        $solr_config = Config::get('solr');

        // create a client instance      
        $this->client = new \Solarium\Client($solr_config);
    }


    public function getIndex()
    {           
        /*$ping = $this->client->createPing();

        try {
            $result = $this->client->ping($ping);
            return var_dump($result);
        } catch (Solarium\Exception $e) {
            return 'hmmm';
        }*/

        if(Input::has('q')){
            // create the query
            $query = $this->client->createSelect();

            // set the string
            $query->setQuery('%P1%', array(Input::get('q')));

            // execute the query
            $resultset = $this->client->select($query);

            // create the view
            return View::make('search.index', [
                'q'         => Input::get('q'),
                'resultset' => $resultset
            ]);
        }

        return 'No search term';
    }

}
我到处找了几个小时的解决方案,尝试以不同的方式创建视图,尝试为这些共享变量输入测试值,但都没有用

我能看到这个视图和其他视图之间的唯一区别是它是一个
get
视图,而不是一个
post
视图,但我没有找到任何理由来解释为什么这会改变任何东西。正如Laravel文档所说,“您还可以在所有视图中共享一段数据”


如何将这些变量共享到此视图?

添加
parent::\uu construct()到SearchController的构造方法。所有这些都应该起作用。喜欢

public function __construct()
{

    parent::__construct();

    //Rest of your code
}

如果篮子是空的/从未设置,会发生什么?这会导致问题吗?当它为空时,视图仍在任何其他页面上工作,它只是告诉您它为空!如果您在控制器中手动定义变量-并手动将其附加到视图-那么它是否工作?只需在运行时尝试,是的,它可以从控制器本身加载。我想我可以把它放在那里,但我想知道它为什么不能按预期工作谢谢你的回复。使用
公共函数父函数::uu construct()
给我这个错误:
语法错误,意外的“:”(T_PAAMAYIM_NEKUDOTAYIM),应该是'(“
只是想尝试找到一种方法来克服这个问题,不是那样的哈哈。在SearchController的构造方法中添加一行。啊,没有看到分号!很抱歉。无论如何,我仍然会遇到同样的错误,我很抱歉,我已经添加了您的SearchController的构造方法。我完全按照您所说的做了-但是我eft中的一些代码抛出了与以前相同的错误,因此出现了最后一条评论-但现在我去掉了它,它正在工作!非常感谢您的耐心!您能简单地解释一下这行代码为什么工作吗?