0

CodeIgniter 2.1.3 を次の HMVC hereプラグインで拡張しました。最後までたどり、基本的な例で問題なく動作するようになりました。ただし、BitAuth 認証ライブラリを使用してアプリケーションを拡張し、モジュールとして実装したいと考えています。

したがって、プラグインのドキュメントに従ってすべての手順を実行し
ました。BithAuthライブラリに付属するコントローラーとビューを使用してフォルダー認証を作成し、モジュールコントローラーとメソッドを呼び出しましたが、これにより404エラーが発生します。

たとえば、呼び出したときに、テストモジュールと私のbithauthモジュールの間に1つの違いがあることに気付きました

<?php Modules::run('module/controller/method'); ?>

これをテスト モジュールで実行し、localhost/home/index にアクセスすると、ページにホームページ ビューが表示され、モジュールのビューがレンダリングされます。ただし、bitauth モジュールでこれを呼び出してアクセスすると、localhostリダイレクトされlocalhost/bithauth_controller/bitauth_methodて 404 エラーがスローされます。

私のフォルダ構造:

->application  
-->controllers  
-->views  
-->models  
--->modules/auth/controllers  
--->modules/auth/vews/examples  
--->modules/auth/models    

ホーム URL にマップするホーム コントローラー: localhost

class Home extends MX_Controller {
    public function index()
    {
        $this->load->view('home');
    }
}

およびそのビュー ファイル:

<html>
    <head>
        <title>Shop: index</title>
    </head>
    <body>
        <?php Modules::run('auth/Example/index'); ?>
    </body>
</html>

auth フォルダーに、bithauth コントローラーがあります。

class Example extends MX_Controller
{

    /**
     * Example::__construct()
     *
     */
    public function __construct()
    {
        parent::__construct();

        $this->load->library('bitauth');

        $this->load->helper('form');
        $this->load->helper('url');

        $this->load->library('form_validation');
        $this->form_validation->set_error_delimiters('<div class="error">', '</div>');
    }

    public function index()
    {
        if( ! $this->bitauth->logged_in())
        {
            $this->session->set_userdata('redir', current_url());
            redirect('example/login');
        }

        $this->load->view('example/users', array('bitauth' => $this->bitauth, 'users' => $this->bitauth->get_users()));
    }


}

そして auth/views のビュー: シンプルなフォーム

<body>
    <?php

        echo '<table border="0" cellspacing="0" cellpadding="0" id="table">';
        echo '<caption>BitAuth Example: Users</caption>';
        echo '<tr><th width="1">ID</th><th>Username</th><th>Full Name</th><th>Actions</th></tr>';
        if( ! empty($users))
        {
            foreach($users as $_user)
            {
                $actions = '';
                if($bitauth->has_role('admin'))
                {
                    $actions = anchor('example/edit_user/'.$_user->user_id, 'Edit User');
                    if( ! $_user->active)
                    {
                        $actions .= '<br/>'.anchor('example/activate/'.$_user->activation_code, 'Activate User');
                    }

                }

                echo '<tr>'.
                    '<td>'.$_user->user_id.'</td>'.
                    '<td>'.$_user->username.'</td>'.
                    '<td>'.$_user->fullname.'</td>'.
                    '<td>'.$actions.'</td>'.
                '</tr>';
            }
        }
        echo '</table>';

        echo '<div id="bottom">';
        echo anchor('example/logout', 'Logout', 'style="float: right;"');
        echo anchor('example/groups', 'View Groups');
        if($bitauth->is_admin())
        {
            echo '<br/>'.anchor('example/add_user', 'Add User');
        }
        echo '</div>';

    ?>
</body>

if()私が解決したメソッドのステートメントが原因でリダイレクトが発生していることに気付きましたindex()が、モジュールのビューが表示されず、エラーも発生しません。

4

2 に答える 2

2

モジュールのビューが表示されず、エラーも発生しません。

これを試して:

<?php echo Modules::run('module/controller/method'); ?>

ただし、この方法を使用することをお勧めします (Codeigniter Output クラス):

<?php $this->output->append_output( Modules::run('module/controller/method') ); ?>

これが役立つことを願っています

于 2013-01-26T19:55:18.803 に答える
0

したがって、ルートで (GET/POST/DELETE/PUT) を使用し、404 エラーに直面しているときに解決策を探している人がいる場合は、ここにREQUEST_METHOD解決策があります: どうやら、CodeIgniter の HMVC プラグインは、異なるネイティブ バージョンとは異なり、ルーティング リクエストのタイプ。実際、特定のタイプのリクエストのルートを定義すると、関連するモジュールのロードに失敗します。そこで、モジュール クラスを微調整しました。上記の他の人が指定したようにコード構造を維持している場合は、application/third_party/MX/Modules.php234 行目に移動して以下を追加する必要があります。

            $method = $_SERVER['REQUEST_METHOD'];
            $val = is_array($val) ?(empty($val[$method]) ?'' :$val[$method]) :$val;
于 2015-11-29T22:03:50.003 に答える