【问题标题】:variables not passing to view in laravel from controller变量未从控制器传递到 laravel 中的视图
【发布时间】:2020-03-05 17:58:50
【问题描述】:

变量没有从控制器传递到 laravel 项目中的视图。获取未定义的变量:标题错误。

function index()
{

    $data = array(
        'title' => 'Font Awesome & Material Design Icons',
        'description' => 'Create your project with Font Awesome & Material Design Icons',
        'seo_keywords' => 'Create your project with Font Awesome & Material Design Icons',
        'data' => DB::table('fontawesomeicons')->orderBy('id', 'asc')->paginate(50),
    );   

    // $data = DB::table('fontawesomeicons')->orderBy('id', 'asc')->paginate(50);
    return view('pagination', compact('data'));
}

【问题讨论】:

    标签: laravel laravel-5


    【解决方案1】:

    The compact function 将创建一个数组,其中data 作为唯一的键,数组作为它的值。这不是你应该做的,你需要一个数组,直接包含你视图中需要的变量。

    因此您可以将数据数组作为view() 函数的第二个属性传递。

    return view('pagination', $data);
    

    或者,如果您真的想将整个 $data 数组作为一个整体变量发送,则必须在刀片视图中使用数组索引:

    {{ $data['title'] }}
    

    【讨论】:

    • 我需要用 compact 来做,因为我在分页刀片中渲染到其他刀片文件
    • 我添加了一个示例,如果您想将整个 $data 数组发送到您的视图,您可以使用该示例。
    【解决方案2】:

    试试

    return view('pagination')->with(compact('data'));
    

    或者试试

    $title = 'Font Awesome & Material Design Icons';
    $description = 'Create your project with Font Awesome & Material Design Icons';
    $seo_keywords = 'Create your project with Font Awesome & Material Design Icons';
    $data = DB::table('fontawesomeicons')->orderBy('id', 'asc')->paginate(50);
    
    return view('pagination',compac(['title','description','seo_keywords','data']));
    

    【讨论】:

      【解决方案3】:

      compact('data') 像这样返回数组:['data' => $data]

      所以return view('pagination', compact('data'));的代码就相当于:

      return view('pagination', ['data' => $data]);
      

      您可以像这样访问控制器变量:$data['title']$data['description'] ... 您应该在视图中传递数据,而不是 compact('data')

      return view('pagination', $data);
      

      或者你可以使用

      return view('pagination', compact('data')['data']);
      

      但这没有意义

      【讨论】:

        【解决方案4】:

        你可以试试这样的:

        function index()
        {
        
            $data['data'] = array(
                'title' => 'Font Awesome & Material Design Icons',
                'description' => 'Create your project with Font Awesome & Material Design Icons',
                'seo_keywords' => 'Create your project with Font Awesome & Material Design Icons',
                'data' => DB::table('fontawesomeicons')->orderBy('id', 'asc')->paginate(50),
            );   
        
            // $data = DB::table('fontawesomeicons')->orderBy('id', 'asc')->paginate(50);
            return view('pagination', $data);
        }
        

        【讨论】:

          猜你喜欢
          • 2014-12-08
          • 1970-01-01
          • 2017-06-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-03-30
          • 2012-02-10
          • 2017-05-14
          相关资源
          最近更新 更多