无法将变量传递给Laravel中的控制器进行查看

时间:2018-03-08 05:04:21

标签: laravel

尝试将数据数组传递给所有视图,但我不断收到错误next。不确定遗失的是什么。

我的所有页面指定控制器都扩展了以下BaseController

BaseController

ListNode(3)

布局/ default.blade.php

Undefined variable: data

3 个答案:

答案 0 :(得分:0)

您需要将这些变量返回到查看(刀片)文件,请尝试以下代码:

  class BaseController extends Controller
{
    public function theme_options() {
        // Set number of columns
        $footer_cols = DB::table('theme_settings')->where('id','=','200')->value('setting_value');
        $widget_width = 12 / $footer_cols;

        // Footer Settings
        $data = array(
            'widget_width' => $widget_width
        );

        return view('your_view_name')->with($data);
    }
}

答案 1 :(得分:0)

为视图数据共享创建新的提供程序

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class ViewComposerServiceProvider extends ServiceProvider
{

   public function boot()
   {
      $footer_cols = DB::table('theme_settings')->where('id','=','200')->value('setting_value');

       return view()->composer('*',function($view){
          $view->with('pages',12 / $footer_cols);
       });

   }


   public function register()
   {

   }

}

不要忘记在ViewComposerServiceProvider文件中将providers添加到config/app.php数组

答案 2 :(得分:0)

  

有时,您可能需要与应用程序呈现的所有视图共享一段数据。您可以使用view facade的共享方法执行此操作。

AppServiceProvider启动方法中添加以下代码

// Set number of columns
$footer_cols = DB::table('theme_settings')
                ->where('id', '=', '200')
                ->value('setting_value');

$widget_width = 12 / $footer_cols;

View::share('widget_width', $widget_width);

以便变量widget_width可用于您的所有观看次数。

以下是Documentation

P.S:确保进行必要的导入,如

use Illuminate\Support\Facades\View;
use DB;