0

私はcakephpフレームワークの初心者です。コントローラーの関数を呼び出すことができません。コントローラ-

class PagesController extends AppController {
    public $name = 'Pages';
    public $uses = array();

    public function display() {
        $path = func_get_args();

        $count = count($path);
        if (!$count) {
            $this->redirect('/');
        }
        $page = $subpage = $title_for_layout = null;

        if (!empty($path[0])) {
            $page = $path[0];
        }
        if (!empty($path[1])) {
            $subpage = $path[1];
        }
        if (!empty($path[$count - 1])) {
            $title_for_layout = Inflector::humanize($path[$count - 1]);
        }
        $this->set(compact('page', 'subpage', 'title_for_layout'));
        $this->render(implode('/', $path));
    }

    public function register() {
        $this->set('fdf', 'chandan');
        $this->render('home1');
    }
}

しかし、私はdisplay()を呼び出しています。しかし、私は register() を呼び出していません。私のroutes.phpファイルのような-

Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));

私を助けてください。Cakephp のビューからコントローラー関数を呼び出す方法。そして、そのためにどのような設定を行う必要がありますか?.

4

1 に答える 1

1

私が作るいくつかのポイント、ルートファイルはカスタムスラッグ/ URLを定義するためのものです。ここで最初のルート定義を見てください:

Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));

これは、「www.mysite.com/」がコントローラ ページ、アクション ディスプレイにリンクし、最初のパラメータをホームとして渡す必要があることを示しています。

これは、「www.mysite.com/pages/display/home」を実行することでアクセスできますが、ルートとして「/」を使用する方が整然としています。一般的なルールは「www.mysite.com/controller/action/param1/param2/etc..」です。

したがって、このロジックに従って、 「www.mysite.com/pages/register」のような新しいアクション メソッドにアクセスします 。

そうは言っても... MVCを使用する場合は、定められた規則に従う必要があります。登録メソッドを作成する場合は、ユーザーアカウントを処理するコントローラー内に実際に含める必要があります。つまり、「UsersController」-「www.mysite .com/users/register"

また、特別な条件下で別のビューをレンダリングする必要がない限り、実際に $this->render() を使用する必要はありません。

要約すると、関連するコントローラー (つまり、www.mysite.com/users/login および www.mysite.com/users/register) 内にすべてのアクションを含め、他の何かをレンダリングする必要が本当にない限り、決して $this->render を直接指定しないでください。デフォルトより (/users/register.ctp が www.mysite.com/users/register のデフォルトになります)、ルートを使用してより整然としたまたはカスタム URL を作成します。

これらの概念を理解するには、ブログのチュートリアルを読んで従うことを強くお勧めします。

于 2013-05-15T19:20:53.657 に答える