php-如何在Laravel中传递数据进行查看?
我使用$posts将数据传递到刀片视图,并在刀片视图中尝试运行@foreach ($posts as $post),但最终出现错误,提示未定义$posts。
我的问题是如何将$posts数组命名?
Sam Pettersson asked 2020-01-03T14:03:15Z
14个解决方案
75 votes
您可以使用with方法将数据传递到视图。
return View::make('blog')->with('posts', $posts);
Mostafa Adly answered 2020-01-03T14:03:24Z
49 votes
值得一提的是,从Laravel 5开始,将数据传递到视图的过程如下:
return view("blog", ["posts"=>$posts]);
要么:
return view("blog", compact("posts"));
文档可在此处获得。
miken32 answered 2020-01-03T14:03:53Z
11 votes
如果您只想传递一个变量来查看,则可以使用
在控制器中
return view('blog')->withTitle('Laravel Magic method.');
视野中
Post title is {{$title}}.
如果要传递多个变量进行查看,则可以使用
在控制器中
return view('blog')->withTitle('Laravel magic method')->withAuthor('Mister Tandon');
视野中
Post title is {{$title}}.Author Name is {{$author}}
Parvesh Kumar Tandon answered 2020-01-03T14:04:35Z
9 votes
您还可以将数组作为视图模板名称之后的第二个参数传递,而不是将一堆array_merge方法串在一起。
return View::make('blog', array('posts' => $posts));
或者,如果您使用的是PHP 5.4或更高版本,则可以使用更好的“短”数组语法:
return View::make('blog', ['posts' => $posts]);
如果要在其他位置计算数组,这将很有用。 例如,如果每个控制器都需要传递一堆变量,并且要将其与每个特定控制器唯一的变量数组结合在一起(例如,使用array_merge),则可以计算$variables( 其中包含一个数组!):
return View::make('blog', $variables);
(我是从头开始做的:让我知道语法错误是否滑入...)
iconoclast answered 2020-01-03T14:05:09Z
6 votes
use TCG\Voyager\Models\Jobtype;
class FormController extends Controller
{
public function index()
{
$category = Jobtype::all();
return view('contact', compact('category'));
}
}
使用你的模型
将其分配给变量
将对象传递到视图这是一个例子:
li bing zhao answered 2020-01-03T14:05:37Z
5 votes
提示1:
使用With(),这是最佳做法
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]);
venkatSkpi answered 2020-01-03T14:06:18Z
4 votes
控制器:
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);
}
指数:
posts
@if(count($this_will_be_used_as_variable_in_views)>0)
@foreach($this_will_be_used_as_variable_in_views as $any_variable)
{{$any_variable->enter_table_field}}
{{$any_variable->created_at}}
@endforeach
@else
empty
@endif
希望这可以帮助! :)
kamal answered 2020-01-03T14:06:47Z
2 votes
你也可以这样
$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
Sagar jadhav answered 2020-01-03T14:07:11Z
1 votes
您也可以用另一种方式做同样的事情,
如果您使用的是PHP 5.5或最新版本,则可以按照以下步骤进行操作,
控制器:
return view(index, compact('data1','data2')); //as many as you want to pass
视图:
You can access {{$data1}}. [if it is variable]
@foreach($data1 as $d1)
You can access {{$d1}}. [if it is array]
@endforeach
您可以通过相同的方式访问在紧凑函数中传递的所有变量。
希望能帮助到你 :)
Sagar Naliyapara answered 2020-01-03T14:07:53Z
1 votes
您可以使用with方法将数据传递到视图。
return view('greeting', ['name' => 'James']);
Jay Momaya answered 2020-01-03T14:08:14Z
1 votes
您还可以编写将多个数据从控制器传递到视图的方法
return \View::make('myHome')
->with(compact('project'))
->with(['hello'=>$hello])
->with(['hello2'=>$hello2])
->with(['hello3'=>$hello3]);
user9389401 answered 2020-01-03T14:08:35Z
0 votes
例如,您有一个包含数据的数组。
$array1 = $data;
$array2 = $data;
您可以从控制器使用compact传递此变量。 您可以根据需要传递任意数量的数组。
return view('data.index',compact('array1','array2'));
这里的data是视图中的文件夹,而index是扩展名为index.blade.php的文件
在视图中,您可以像这样调用数组
@foreach ($array1 as $something)
// some operation
@endforeach
user3677355 answered 2020-01-03T14:09:08Z
0 votes
您可以使用以下内容传递数据以在Laravel中查看:
public function contact($id) {
return view('contact',compact('id'));
}
TheName answered 2020-01-03T14:09:29Z
-4 votes
对于任何人来说,如果您有大量的变量要传递给视图,或者您希望变量可以同时被许多视图访问,那么这确实很乏味,这是另一种方法
在控制器中,将要传递的变量定义为<?php global $variable;?>,并将值赋予这些变量。
示例<?php global $variable;?>
现在,在视图顶部,只需执行
然后,您现在可以从视图中的任何位置调用变量,例如
{{$variable}}
希望这对某人有帮助。
tkc answered 2020-01-03T14:10:16Z