изменить содержимое макета из контроллера - PullRequest
0 голосов
/ 18 декабря 2010

Я использую Yii. Я хочу иметь динамическую ссылку на макет. Эта динамическая ссылка будет изменена контроллерами. Допустим, динамическая ссылка использует идентификатор пользователя, заданный контроллерами для выполнения задачи.

Я думаю использовать скрипт jQuery для получения идентификатора пользователя, возвращаемого контроллерами, а затем использовать идентификатор пользователя для изменения div, который содержит динамическую ссылку.

Что вы думаете об этой технике?

Ответы [ 2 ]

1 голос
/ 23 декабря 2010

Кажется, что вы хотите динамически изменять ссылку ПОСЛЕ отображения страницы с помощью клиентского JavaScript.Но имеет больше смысла динамически отображать другую ссылку в первый раз, во время процесса рендеринга PHP размером с сервер.В конце концов, контроллер генерирует представление!Я получал бы идентификатор пользователя от контроллера во время запроса страницы, передавал идентификатор в представление и затем динамически создавал ссылку в представлении при начальной загрузке страницы.

Если вы изменяете ссылку в layout (не представление), тогда лучше всего создать переменную в контроллере и установить эту переменную вместе с представлением.Посмотрите, как Yii использует для этого переменные $ layout, $ menu и $ breadcrumbs.

Предполагая, что пользователь вошел в систему и вы хотите его ID, вы можете получить идентификатор изобъект Yii :: app (), например, так:

<?php echo CHtml::link('Edit user',array('user/edit','userId'=>Yii::app()->user->id)); ?>

Но в этот момент вы можете просто запросить идентификатор пользователя в контроллере, и вам не нужно создавать такую ​​ссылку, как эта,

Предполагая, что вы хотите другой идентификатор пользователя, чем вошедший в систему пользователь, передайте этот идентификатор ($ userId) из контроллера в представление и просто сделайте это (как сказал Мойерс):

<?php echo CHtml::link('Edit user',array('user/edit','userId'=>$userId)); ?>

Это создаст следующую ссылку (где $ userId = 99999999):

<a href="/user/edit?userId=99999999">Edit user</a>

Таким образом, когда по ссылке нажимают, в actionEdit () у вас теперь есть доступ кID пользователя с помощью переменной GET $ _GET ['userId'].

СЕЙЧАС, если вы хотите изменить уже созданную ссылку, вам нужно будет использовать jQuery.Но вам нужно будет более подробно объяснить, почему вы это делаете и что вызывает изменение ссылки (выпадающее меню?).

0 голосов
/ 19 декабря 2010

Извините, я не могу понять, что вы пытаетесь сделать.В частности, я не понимаю, что такое динамическая ссылка.

Редактировать:

<? echo CHtml::link('Edit user',array('user/edit','userId'=>$userId)); ?>
...