Laravel 向视图传递数据
在这个主题中,我们将学习如何将数据传递给视图。
有多种方式可以向视图传递数据:
- 使用 name 数组
- 使用 with() 函数
- 使用 compact() 函数
名称数组
名称数组是作为第二个参数传递给 view() 方法的数据数组。
让我们通过一个例子来理解。
步骤1: 首先,我们创建包含页面视图的 student.blade.php 。
student.blade.php
<html>
<body>
<h1>Name of the Students are : <br>
<?php
echo name1;
echo "<br>";
echoname2;
echo "<br>";
echo $name3; ?></h1>
</body>
</html>
在上面的代码中,我们显示了三个变量name1,name2和name3的值。这三个变量的值是从 StudentController.php 文件中获取的。
步骤2: 现在,我们创建了 StudentController.php 文件。
StudentController.php。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class StudentController extends Controller
{
public function display()
{
return view('student',['name1'=> 'Anisha','name2'=>'Nishka','name3'=>'Sumit']);
}
}
在上面的代码中,我们定义了一个 display() 函数,在这个函数中,我们返回了 student.blade.php 文件的视图。
步骤3: 现在,我们在 web.php 文件中定义路由。 web.php
Route::get('/details', 'StudentController@display');
输出
with() 函数
我们还可以使用 with() 函数将数据传递给视图。
- 首先,我们创建名为 student.blade.php 的文件,其中包含页面的视图。
<html>
<body>
<h1>Student id is :
<?php
echo $id;
?>
</body>
</html>
上述代码显示了“ id ”的值。
- 现在,我们创建 StudentController.php 文件。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class StudentController extends Controller
{
public function display(id)
{
return view('student')->with('id',id);
}
}
在上面的代码中,我们创建了一个名为 display() 的函数,该函数返回 student.blade.php 文件的视图,并且我们使用 with() 函数传递了 id 的值。 with() 函数包含两个参数,即变量名(id)和 id 的值。
- 现在,我们定义路由。
Route::get('/details/{id}', 'StudentController@display');
输出
compact()函数
compact()函数也用于将数据传递给视图。它只包含一个参数,即变量的名称。
通过示例来理解。
- 首先,我们创建包含页面视图的student.blade.php文件。
<html>
<body>
<h1>Name is :
<?php
echo $name;?>
</body>
</html>
- 现在,我们创建 StudentController.php 文件。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class StudentController extends Controller
{
public function display($name)
{
return view('student?, compact('name'));
} }
- 现在,在 web.php 文件中定义路由。
Route::get('/details/{name}', 'StudentController@display');
输出
我们可以向 compact() 函数传递多个参数。
通过一个例子来理解。
Student.blade.php
<html>
<body>
<h1>Students Details : <br>
<font size='5' face='Arial'>
<?php
echo "student id is :" .id;
echo "<br>";
echo "Student name is :" .name;
echo "<br>";
echo "Student password is :" .$password; ?></h1>
</font>
</body></html>
StudentController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class StudentController extends Controller
{
public function display(id,name,$password)
{
return view('student',compact('id','name','password'));
}
}
web.php
Route::get('/details/{id}/{name}/{password}', 'StudentController@display');
输出