У меня есть файл в моем первом проекте yii. у моего проекта есть новая тема с этим путем
first_proj\themes\project\views\layouts\main.php
и я хочу вызвать функцию в нем, как показано ниже
<?php
if($is_project_manager){
?>
<div class="each-pop-el" style="cursor:pointer" ng-click="showAllMemberTask()">show tasks</div>
<?php } ?>
и иметь функцию в
first_proj \ защищенные \ Контроллеры \ project.php
это
public function actionIsProjectmanager(){
$project_manager = false;
$crt = new CDbCriteria;
$crt->condition = 'user_id=:uid and role=1';
$crt->params = array('uid'=>Yii::app()->user->id);
$project_manager= projectMember::model()->findAll($crt);
// $model_result = MyModel::model()->test();
$this->render('the url to theme and main.php file', array('is_project_manager' => $project_manager));
}
как я могу добраться до этого файла main.php? что я должен написать вместо
the url to theme and main.php file
в моей функции?
Вы устанавливаете контроллеры layout
в файл. Так это будет выглядеть так:
$this->layout = 'main';
Макеты также должны быть отображены с помощью файла вида.
$this->render('index', array('is_project_manager' => $project_manager));
Затем поместите index.php
файл в вашем views/project
папка с содержанием действий.
Это предполагает, что вы настроили свой конфиг, чтобы тема была project
Первое, что вам нужно знать: Нет необходимости передавать файл макета в представление. Когда вы используете render()
функция, YII автоматически добавить макет для вашего представления. Затем, для указания макета, вам нужно использовать $this->layout = '//layouts/main
в ваших действиях.
используйте это по вашему мнению
<?php
if($this->isProjectmanager){
?>
<div class="each-pop-el" style="cursor:pointer" ng-click="showAllMemberTask()">show tasks</div>
<?php } ?>
и создайте вспомогательную функцию (не действие!) в вашем контроллере
public function IsProjectmanager(){
if ($someConditon) {
return true;
}
else {
return false;
}
}