【问题标题】:unable to pass array from controller to view in laravel无法从控制器传递数组以在 laravel 中查看
【发布时间】:2015-01-20 05:12:11
【问题描述】:

我是 laravel 的新手,我一直在关注文档和几个视频,但是几个小时以来,我一直在尝试将数组从控制器传递到视图,但视图中不断出现此错误:

Undefined variable: quiz

这是控制器代码:

public function SetQuestions($id)
{
    $query = Quiz::find($id);

    $quiz = array(
        'id' => $query->id,
        'noQuestions' => $query->no_questions,
        'totalQuizScore' => $query->total_quiz_score
    );
    return View::make('quiz.set-questions')->with($quiz);
}

这是路线:

Route::resource("/quiz/set-questions/{id}", 'QuizController@SetQuestions');

这是视图中的代码:

 <?php var_dump($quiz); ?>

现在我只是转储数据以查看值是否从 null 更改。

【问题讨论】:

    标签: php laravel laravel-4


    【解决方案1】:

    使用compact,然后在您的视图中调用$quiz。

    public function SetQuestions($id)
    {
        $query = Quiz::find($id);
    
        $quiz = array(
            'id' => $query->id,
            'noQuestions' => $query->no_questions,
            'totalQuizScore' => $query->total_quiz_score
        );
        return View::make('quiz.set-questions', compact('quiz'));
    }
    

    【讨论】:

    • 我试过这个,我仍然得到同样的未定义错误。
    【解决方案2】:

    如docs 中所述,视图方法采用两个参数。第一个是您希望在视图中访问它的变量的名称,第二个是实际数据。

    return View::make('quiz.set-questions')->with('quiz', $quiz);
    

    还有一些其他的选择

    return View::make('quiz.set-questions')->withQuiz($quiz);
    
    return View::make('quiz.set-questions', array('quiz'=>$quiz));
    
    return View::make('quiz.set-questions', compact($quiz));
    

    所有这些都有相同的结果

    【讨论】:

    • 我也试过了,但没用,我尝试使用 Session::get('quiz') 从视图中访问值,但该值始终显示为 NULL。
    • 嗯,这很奇怪。 return View::make('quiz.set-questions')-&gt;with('quiz', 'test'); 也显示 NULL 吗?
    • Nope with 'test' works 但是当我尝试传递数组时,它会显示为 NULL。
    • 如果你使用“样本”数组呢?喜欢$quiz = array('id' =&gt; 1, 'totalQuizScore' =&gt; 100);
    • 但是我刚刚尝试了“return View::make('quiz.set-questions')->withQuiz($quiz);”效果很好,谢谢,有什么理由可以有效而其他无效吗?我想知道以供将来参考。 :)
    【解决方案3】:

    对于 Laravel 5,你必须这样做。

    Route::get('/', function(){
    
      $people = ['John','Joe','Jack']; 
    
      return view('welcome',compact('people'); 
    
    });
    

    如果你通过$people 你会得到一个错误。

    【讨论】:

      猜你喜欢
      • 2017-07-27
      • 1970-01-01
      • 2017-03-03
      • 2015-12-27
      • 2021-04-19
      • 1970-01-01
      • 2012-09-02
      • 2017-02-08
      • 2017-10-12
      相关资源
      最近更新 更多