2

私は 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>

次のようなコードを使用して、メインウィジェットフォルダー (つまり、application/extensions/widget/login/login.php) に Login.php を作成しました。

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

config/main.php ですべての拡張機能を autoload として作成しました

なので

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

次に、私のWebページビューファイルでそれを使用してみてください

widget('ログイン'); ?>

これは私にこのエラーを投げます

見積もり

include(Login.php) [function.include]: 開けませんでした >stream: そのようなファイルやディレクトリはありません

何がいけないのか教えてください???自分のウィジェットを自分のページに表示するにはどうすればよいですか。

そして一度私はこれを試しました

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

このエラーが発生しました

見積もり

エイリアス「application.extensions.widget.login.Login」は無効です。>既存の PHP ファイルを指しており、そのファイルが読み取り可能であることを確認してください。

4

1 に答える 1

0

拡張フォルダーのアクセス許可を変更すると、問題が修正されます。その後、期待どおりに正常に動作します。

于 2015-10-21T03:50:05.503 に答える