如何在Laravel中传递数据?

时间:2013-08-20 17:51:12

标签: php laravel

我使用return View::make('blog', $posts);将数据传递到我的刀片视图,并且在我的刀片视图中,我正在尝试运行@foreach ($posts as $post)我最终收到错误消息,指出$posts未定义

我的问题是如何调用$posts数组?

15 个答案:

答案 0 :(得分:66)

您可以使用with方法将数据传递到视图。

return View::make('blog')->with('posts', $posts);

答案 1 :(得分:43)

可能值得一提的是,从Laravel 5开始,将数据传递给视图现在就像这样完成:

return view("blog", ["posts"=>$posts]);

或者:

return view("blog", compact("posts"));

文档可用here

答案 2 :(得分:10)

如果您只想传递一个变量进行查看,可以使用

控制器

return view('blog')->withTitle('Laravel Magic method.');

视图

<div>
  Post title is {{$title}}.
</div>

如果要传递多个变量进行查看,可以使用

控制器

return view('blog')->withTitle('Laravel magic method')->withAuthor('Mister Tandon');

视图

<div>
   Post title is {{$title}}.Author Name is {{$author}}
</div>

答案 3 :(得分:9)

您还可以将数组作为视图模板名称后面的第二个参数传递,而不是将一堆->with()方法串联在一起。

return View::make('blog', array('posts' => $posts));

或者,如果你使用PHP 5.4或更高版本,你可以使用更好的&#34;短&#34;数组语法:

return View::make('blog', ['posts' => $posts]);

如果要在其他位置计算数组,这非常有用。例如,如果你有一堆变量,每个控制器都需要传递给视图,并且你想要将它与每个特定控制器所特有的变量数组合(例如,使用array_merge),可能会计算$variables(包含数组!):

return View::make('blog', $variables);

(我做到了这一点:让我知道语法错误是否会出现......)

答案 4 :(得分:6)

use TCG\Voyager\Models\Jobtype;

class FormController extends Controller
{
public function index()
{
   $category = Jobtype::all();
   return view('contact', compact('category'));

}
}
  • 使用您的模型
  • 将其分配给变量
  • 将对象传递给视图 这是一个例子:

答案 5 :(得分:5)

提示1:

  

使用(),这是最佳做法

return view('about')->withName('Author Willson')->withJob('Writer');
return View::make('home')->with(compact('about'))
return View::make('home')->with('comments', $comments);

提示2:

  

使用compact()

return view(about, compact('post1','post2'));

提示3:

  

使用第二个参数:

return view("about", ["comments"=>$posts]);

答案 6 :(得分:4)

控制器:

use App\your_model_name;
funtion index()
{
$post = your_model_name::all();
return view('index')->with('this_will_be_used_as_variable_in_views',$post);
}

指数:

<h1> posts</h1>
@if(count($this_will_be_used_as_variable_in_views)>0)
@foreach($this_will_be_used_as_variable_in_views as $any_variable)
<ul>
<p> {{$any_variable->enter_table_field}} </p>
 <p> {{$any_variable->created_at}} </p>
</ul>

@endforeach
@else
<p> empty </p>
@endif

希望这有帮助! :)

答案 7 :(得分:2)

您也可以这样

$arr_view_data['var1'] = $value1;
$arr_view_data['var2'] = $value2;
$arr_view_data['var3'] = $value3;

return view('your_viewname_here',$arr_view_data);

然后您访问此变量以查看$var1$var2$var3

答案 8 :(得分:1)

你也可以用另一种方式做同样的事情,

如果您使用的是PHP 5.5或最新版本,那么您可以按照以下步骤进行操作,

控制器:

return view(index, compact('data1','data2')); //as many as you want to pass

查看:

<div>
    You can access {{$data1}}. [if it is variable]
</div>

@foreach($data1 as $d1)
    <div>
        You can access {{$d1}}. [if it is array]
    </div>
@endforeach

同样地,您可以访问在紧凑函数中传递的所有变量。

希望有所帮助:)

答案 9 :(得分:1)

您可以使用with方法将数据传递给视图。

return view('greeting', ['name' => 'James']);

答案 10 :(得分:1)

您也可以编写将多个数据从控制器传递到视图

 return \View::make('myHome')
            ->with(compact('project'))
            ->with(['hello'=>$hello])
            ->with(['hello2'=>$hello2])
            ->with(['hello3'=>$hello3]);

答案 11 :(得分:0)

您可以使用以下内容传递数据以在Laravel中查看:

public function contact($id) {
    return view('contact',compact('id'));
}

答案 12 :(得分:0)

例如,您有一个包含数据的数组。

CommandArgument

您可以从控制器中使用Compact传递此变量。您可以根据需要传递任意数量的数组。

$array1  =  $data;
$array2 = $data;

这里的数据是视图中的文件夹,而索引是扩展名为index.blade.php的文件

在视图中,您可以像这样调用数组

return view('data.index',compact('array1','array2'));

答案 13 :(得分:0)

您可以通过压缩将表数据传递给视图。

$users = RoleModel::get();
 return view('super-admin',compact('users'));

答案 14 :(得分:-4)

对于任何人来说,如果您有大量的变量要传递给视图,或者您希望变量可以同时被许多视图访问,这真的很乏味,这是另一种方式

在控制器中,您定义要作为global传递的变量,并将这些值赋予这些变量。

示例global $variable; $variable = 1;

现在在视图的顶部,只需完成

<?php global $variable;?>

然后,您现在可以从视图中的任意位置调用变量

{{$variable}}

希望这对某人有帮助。