1

CodeIgniterのビューの編成に問題があります。

プロジェクト:ライブラリ(本棚)の管理を許可する単純なWebアプリケーションを作成します。

メンバーカテゴリブックの3つのモデルをそれぞれのコントローラーで作成しました。

コントローラーを使用してメンバーモデルを実装しました。

member_controllerには、次のものがあります。

public function login(){

$this->load->helper('form');
$this->load->helper('email');
$this->load->library('form_validation');

$mail = $this->input->post('mail');
$pass = $this->input->post('pass');

$data['mail'] = $mail;
$data['pass'] = $pass;


$this->form_validation->set_rules('mail', 'mail', 'required');
$this->form_validation->set_rules('pass', 'pass', 'required');

if ($this->form_validation->run() === TRUE)
{

$result=$this->membre_model->login($mail,$pass);

if($result==TRUE){

$this->load->view('templates/header.php');
$this->load->view('membre/logged',$data);
$this->load->view('templates/footer.php');


}

ユーザーがログに記録されたら、彼が以前に作成したすべての既存のカテゴリを表示したいと思います(したがって、データベースからそれらを取得します)。

  • どうやってやるの?
  • メンバーコントローラーのログイン機能でカテゴリーコントローラーの機能を呼び出す必要がありますか?
  • ログイン機能からカテゴリビューをロードする必要がありますか?
  • 1つのコントローラー(メンバーコントローラー)だけでサイトを構築する必要がありますか?
  • さまざまなコントローラーのさまざまなビューを使用してWebアプリを構築するにはどうすればよいですか?

最後に、私が得られないのは、異なるコントローラーがそれらの間でどのように通信するかです。

4

2 に答える 2

0

URIを使用して、あるコントローラーを別のコントローラーから呼び出すことができるため、たとえば、ルートファイルに次のようなエントリがある場合があります。

$route['books/get_books_by_user/(:any)'] = "books/get_books_by_user/$1";

次に、ログインコントローラから電話をかけることができます。

redirect('books/get_books_by_user/'.$user_id)

次に、ブックコントローラのget_books_by_userメソッドでこれを処理します。たとえば、次を使用します。

$user_id = $this->uri->segment(3);
$collection = $this->books_model->get_books_by_user($user_id);

あなたが抱えている問題は、ユーザー以外の誰かに自分の本のリストを見せたくない場合は、ユーザーがあなたの本のコントローラーからログインしていることを確認する必要があるということです。これが、ほとんどのユーザー認証スクリプトが、任意のコントローラーからアクセスできるライブラリとして表示される理由です。認証がこのようにレイアウトされていない場合は、ユーザーの詳細をセッションデータとして保存し、そこから確認できます。これは、uriを介してユーザー名を渡す必要がないことを意味します。詳細については、こちらのセッションドキュメントをご覧ください: http: //ellislab.com/codeigniter/user-guide/libraries/sessions.html

于 2013-01-15T16:57:08.853 に答える
0

どうやってやるの?

ログインステータスに基づいてユーザーをリダイレクトする各ページをロードするときに、例外を追加する必要があります。つまり、ユーザーがログインしている場合は、ユーザーをアプリケーションに移動します。ユーザーが存在しない場合は、登録ページにリダイレクトします。

これは、保存されているセッション値に基づいてユーザーがログインしているかどうかを確認することで実行できます。このセッションが保存されている場合は、ユーザーにページを表示させることができます。これは、Codeigniterの簡単なログインシステムを説明する素晴らしいチュートリアルです。

http://www.codefactorycr.com/login-with-codeigniter-php.html

私の意見では、私は通常、アプリケーションのログインシステムを簡素化するために認証ライブラリを使用しています。私はIonAuthを使用します。これには、使用できるすべての機能を説明する優れたドキュメントがあります。

メンバーコントローラーのログイン機能でカテゴリーコントローラーの機能を呼び出す必要がありますか?

通常どおり、カテゴリコントローラを使用できます。ブラウザに保存されているセッション情報に基づいて、ページ情報を変更するか、ユーザーをリダイレクトします。

ログイン機能からカテゴリビューをロードする必要がありますか?

カテゴリコントローラからカテゴリビューをロードします。ログインコントローラは、ログインが実行された後、ユーザーをカテゴリコントローラにリダイレクトします。

1つのコントローラー(メンバーコントローラー)だけでサイトを構築する必要がありますか?

いいえ、コントローラーはいくつでも持つことができます。

さまざまなコントローラーのさまざまなビューを使用してWebアプリを構築するにはどうすればよいですか?

コントローラは、サイトのセクションを表します。このコントローラーは、さまざまなものに対して複数のビューをロードします。これは、MVCワークフローを説明する素晴らしい小さなチュートリアルです。これは、プロセスを理解するのに役立ちます。

于 2013-01-15T17:04:08.370 に答える