Как создать виджет в Yii на основе существующего представления действий входа в систему? - PullRequest
1 голос
/ 08 февраля 2011

как создать виджет из существующего вида действия входа в систему? это то, что у меня есть в моем файле login.php для просмотра контроллера сайта.

<div id="login-wrapper">
<div class="login-container">
    <?php $form=$this->beginWidget('CActiveForm', array('id'=>'login-form','enableAjaxValidation'=>true,)); ?>
            <div class="login-input">
            <p>
                <?php echo $form->labelEx($model,'username'); ?>
                <?php echo $form->textField($model,'username',array('placeholder'=>'username')); ?>
            </p>
            <p>
                <?php echo $form->labelEx($model,'password'); ?>
                <?php echo $form->passwordField($model,'password',array('placeholder'=>'password')); ?>
            </p>
            <div id="bmenu">
                <ul class="menu">
                    <li class="register"><?php echo CHtml::link("Registration", array('wsmembers/register'));?></li>
                    <li class="login"><?php echo CHtml::submitButton('Login',array('id'=>'login_button')); ?></li>
                </ul>
            </div>
        </div>
     <?php $this->endWidget(); ?>
</div><!-- .login-container -->
<div class="login-bg-bottom"></div>

если я нажму на ссылку входа по умолчанию на панели навигации, это единственный раз, когда код выше поле для входа в правом верхнем углу страницы

но проблема в том, что поле для входа должно быть на главной странице и уже должно быть там без нажатия на ссылку входа в систему на панели навигации. так как мне это сделать? это как-то связано с файлом макета main.php, верно?

1 Ответ

2 голосов
/ 08 февраля 2011

Действительно.

То, что вы определили, это представление, которое используется для контента. Если вы нажмете на ссылку, будет выполнено действие входа в систему, и оно покажет форму.

Если вы хотите, чтобы это отображалось всегда, просто выполните Yii :: app () -> controller-> renderPartial для представления. Обратите внимание, что это не может быть $ this-> renderPartial, как обычно, так как основной макет не выполняется контроллером. Я обычно определяю псевдоним под названием «userViews», который указывает на защищенные / views, поэтому я могу сделать:

Yii::app()->controller->renderPartial('userViews.site.login');

Или что-то в этом роде. Надеюсь, это поможет:)

Что касается псевдонима, вы можете добавить это в вашу конфигурацию:

Yii::setPathOfAlias('userViews', dirname(__FILE__) . '/../../protected/views');

Предполагается, что ваши представления действительно находятся под защитой.

...