2013-08-23 21 views
2

我对YII及其扩展非常新颖...我试图创建基本登录小部件作为扩展,以便我可以重用它。认为我已经完成了。在Yii中创建小部件作为扩展

创建扩展/插件/登录/视图/ 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> 

和在主窗口部件夹 创建的login.php(即:application/extensions/widget/login/login.php)代码如下:

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

and made all ext ensions在配置自动加载/ main.php

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

然后尝试使用它在我的网页视图文件

插件( '登录'); ?>

这把我这个错误

报价

包括(login.php中)[]:未能打开>流:没有这样的文件或目录

告诉我出了什么事???我应该怎么做才能让我的Widget进入我的页面。

,一旦我想这

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

我得到这个错误

报价

别名 “application.extensions.widget.login.Login” 是无效的。确保它指向一个>现有的PHP文件,并且该文件是可读的。

+0

实际上,文件夹路径应该是[您的应用名称] /protected/extensions/widget/login/Login.php。不要忘记登录文件夹的设置权限。 –

+1

''application.extensions。*','是不够的。 Yii路径不递归,你的课程将不会被发现。试试'application.extendions.widgets.login。*'来代替。另外请确保你的文件被称为'Login.php'而不是'login.php'。 –

+0

@MichaelHärtl'application.extensions。*'不是递归的,它是真的,但我们不需要这个声明来配置扩展工作,但这绝对不是原因。 –

回答

0

更改扩展文件夹的访问权限可解决问题。之后,它可以正常工作。