Создание виджета как расширения в Yii

Я очень новичок в YII и его расширениях... я пытаюсь создать базовый виджет входа в систему в качестве расширения, чтобы я мог его повторно использовать....

следующее думает, что я сделал.

Создайте представление виджета в extensions/widget/login/views/hloginForm.php с этими кодами

<?php echo CHtml::beginForm($this->url, 'post', $this->htmlOptions); ?>
<div class="form header">
<table>
    <tr> 
            <td>
                    <div class="row">
                            <?php echo $form->labelEx($model,'username'); ?>
                            <?php echo $form->textField($model,'username',array('class'=>'txt')); ?>
                            <?php echo $form->error($model,'username'); ?>
                    </div>
                    <div class="row rememberMe">
                            <?php echo $form->checkBox($model,'rememberMe'); ?>
                            <?php echo $form->label($model,'rememberMe',array('class'=>'dull')); ?>
                            <?php echo $form->error($model,'rememberMe'); ?>
                    </div>
            </td>
            <td>
                    <div class="row">
                            <?php echo $form->labelEx($model,'password'); ?>
                            <?php echo $form->passwordField($model,'password',array('class'=>'txt')); ?>
                            <?php echo $form->error($model,'password'); ?>
                    </div>

                    <div class="row">
                            <?php echo $form->label($model,'Forget Password?',array('class'=>'dull')); ?>
                    </div>
            </td>
            <td>
                    <div class="row"> &nbsp; </div>
                    <div class="row">
                            <?php echo CHtml::submitButton('Login',array('class'=>'logbtn')); ?>
                    </div>
            </td>
    </tr>
</table>

and created a Login.php in main widget folder (that is : application/extensions/widget/login/login.php) with the code like :

<?php 
class Login extends CWidget
{
    public function run()
    {
            $this->render('hloginForm');
    }
}
?>

и сделал все расширения автозагрузочными в config/main.php

as

    'import'=>array(
            ...
            'application.extensions.*',
    ),

затем попробуйте использовать его в моем файле просмотра веб-страницы как

widget('Login'); ?>

это выдает мне эту ошибку

Цитировать

include (Login.php) [function.include]: не удалось открыть> поток: нет такого файла или каталога

Скажи мне, что не так??? Что я должен сделать, чтобы мой виджет появился на моей странице.

и однажды я попробовал это

$this->widget('application.extensions.widget.login.Login', array());

я получил эту ошибку

Цитировать

Псевдоним «application.extensions.widget.login.Login» недействителен. Убедитесь, что он указывает на существующий PHP-файл и этот файл доступен для чтения.


person Jothi Sankar N Kanakavel    schedule 23.08.2013    source источник
comment
На самом деле путь к папке должен быть [имя вашего приложения]/protected/extensions/widget/login/Login.php. Не забудьте установить разрешение для папки входа.   -  person Telvin Nguyen    schedule 23.08.2013
comment
'application.extensions.*', недостаточно. Пути Yii не являются рекурсивными, поэтому ваш класс не будет найден. Вместо этого попробуйте application.extendions.widgets.login.*. Также убедитесь, что ваш файл называется Login.php, а не login.php.   -  person Michael Härtl    schedule 23.08.2013
comment
@MichaelHärtl 'application.extensions.*' не является рекурсивным, это правда, но нам не нужно это объявление в конфигурации, чтобы расширение работало, это не было абсолютной причиной.   -  person Telvin Nguyen    schedule 23.08.2013
comment
@все, я нашел решение проблемы. Разрешение на доступ является основной проблемой для папки расширения. после того, как я изменил разрешение, он работает нормально. Спасибо всем и каждому.   -  person Jothi Sankar N Kanakavel    schedule 27.08.2013


Ответы (1)


Изменение разрешения на доступ к папке расширения устраняет проблему. После этого он работает нормально, как и ожидалось.

person Jothi Sankar N Kanakavel    schedule 21.10.2015