1

私はまだPHPを学んでいるので、私の質問は少し明白に思えるかもしれませんが...

私の質問は opencart に関するものですが、おそらく多くの Web サイトでかなり一般的な方法です。私はopencartモジュールを作成しています。そのモジュールには、さまざまなタスクを完了するいくつかのボタンがあります。これで、パスと適切なアクションを含む正しい「href」をボタンに割り当てました。例えば

$this->data['dosomething'] = $this->url->link('module/modulename/dosomething', 'token=' . $this->session->data['token'], 'SSL');

注: 質問の目的のために、モジュールとアクションを一般的な名前と呼んでいます。

コントローラーには、「index」というプライベート関数があり、その後に「dosomething」というプライベート関数が続きます。

public function index() {

* insert code *

}

public function dosomething() {

*insert code*

$this->redirect($this->url->link('module/modulename', 'token=' . $this->session->data['token'], 'SSL'));

}

さて、ボタンをモジュールコントローラーに向けてから「何かをする」機能を実行する方法を知りたいです。リンクに何か情報を入れることもできます。つまり、action=dosomething でこのように実行できますが、opencart のほとんどは単純に最後の / のテキストをアクションとして使用します。上記の href を使用すると、関数「dosomething」を使用して「module/modulename」にあるコントローラーとテンプレートではなく、「module/modulename/dosomething」にあるコントローラーとテンプレートを見つけようとするため、エラーが発生します。

これが理にかなっていることを願っています。opencart の他の多くのスクリプトがこの方法をうまく使用していることがわかりますが、方法がわかりませんか? 明らかな何かが欠けていると確信しています。

4

1 に答える 1

1

あなたがしていることは正しいです。OpenCart のフレームワークは、メソッドとして指定されている場合、ルートの 3 番目の部分を使用します。試してみると

public function dosomething() {
    die('OK');
}

次に、取得した URL にアクセスすると、空白の白いページが表示OKされます。私の推測では、エラーは実際にはコントローラーが問題であることに関係しておらず、あなたが行った他の何かに関係しています。それか、メソッドとルートの 3 番目の部分が一致しないか、dosomethingメソッドが公開されていません。

于 2012-08-12T12:21:45.703 に答える