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()
が、モジュールのビューが表示されず、エラーも発生しません。