yii2中如何在控制器中分配视图并且传递参数?
class HomeController extends Controller { public function actionIndex() { $username = '马云'; $age = 15; return $this->renderPartial('index', ['username'=>$username, 'age' => $age]); //视图文件名一般情况下最好与方法名actionIndex(index)保持一致 } }
在view文件夹里新建一个home文件夹(视图存放的文件夹名称与控制器名称一致)
在home文件夹里新建一个index.php文件(renderPartial()中传递的第一个参数)
视图中获取变量的方式:
<h1><?php echo $username;?></h1> <h2><?php echo $age;?></h2>
当传递到视图中的变量很多的时候,上面的写法会变得很“臃肿”,可以用下面的方法
class HomeController extends Controller { public function actionIndex() { $data = [ 'username' => '马云', 'age' => 15, 'arr' => [ 'school' => '淡江中学', 'class' => '三年二班', ], ]; return $this->renderPartial('index', $data); //视图文件名一般情况下最好与方法名actionIndex(index)保持一致 } }
视图中获取变量的方式:
<h1><?php echo $username;?></h1> <h2><?php echo $age;?></h2> <h3><?php echo $arr['school'];?></h3>
在实际工作中像上面的字符串和数组混搭传递的方式很少见,更多的是像下面这种情况:
class HomeController extends Controller { public function actionIndex() { $user = [ 'username' => 'zhouxiaodong', 'age' => 26, ]; $article = [ 'title' => '人生应当怎么过?', ]; $data = [ 'user' => $user, 'article' => $article, ]; return $this->renderPartial('index', $data); //视图文件名一般情况下最好与方法名actionIndex(index)保持一致 } }
视图中获取变量的方式:
<h1><?php echo $user['username'];?></h1> <h1><?php echo $article['title'];?></h1>
PS:
<?php echo $article['title'];?>可以简写为<?=$article['title'];?>
模板渲染还有一个函数:render(); 此方式会继承layouts文件夹下的文件