タグ付けされた質問 「controllers」

コントローラとアクションメソッドに関する質問を示します


1
最後のページにリダイレクトする信頼できる方法
最後のページにリダイレクトするための信頼できる方法はmagentoにありますか? エラーが発生した場合に前のページにリダイレクトする小さなフォームがあります。 フォームは製品ページに配置され、正常に完了すると別のページにリダイレクトされます。ただし、エラーが発生した場合は、製品ページにリダイレクトします。 私のアクションURLは /my/module/submit また、信頼できると言うときは、信頼できredirectRefererないことを意味します

2
Magento 1:コアコントローラークラスをオーバーライド/書き換える方法
注:これは、コントローラーの書き換えがどのように機能するかを完全に説明する正規の質問であり、より具体的な「コントローラーXをオーバーライドする方法」または「書き換えが機能しない理由」の質問の重複ターゲットとして使用できます。 参照:Magento 1のオーバーライドに関する正規の質問を探す たとえば、カスタムモジュールのコアコントローラークラスを変更する必要があるとします(メソッドの変更またはメソッドの追加)。これをどのようにして、段階的に行いますか?


1
Magento 2:カスタムコントローラーがインターセプターを生成するのはなぜですか?
最近、テストモジュールの基本的なルーティング構成を作成しました <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/App/etc/routes.xsd"> <router id="standard"> <route id="helloworld" frontName="helloworld"> <module name="Pulsestorm_Helloworld" /> </route> </router> </config> でコントローラファイルを作成しました app/code/Pulsestorm/Helloworld/Controller/Index/Index.php すべてが期待どおりに動作しますが、Magentoが新しいコントローラーのインターセプターを自動的に作成したことを知って驚きました。 var/generation/Pulsestorm/Helloworld/Controller/Index/Index/Interceptor.php コントローラーのプラグインを構成しなかったため、Magentoがインターセプターを生成した理由について少し混乱しました。 Magento 2が新しいコントローラーのインターセプターを自動的に作成するのはなぜですか?

2
AccountControllerオーバーライドが新しいアクションで機能せず、302リダイレクトを行う
アドオンnew actionしてみますAccountController 今:AccountControllerは適切にオーバーライドされます しかしいつでも hit new Action (ajaxLoginPostAction) is redirect to 302. preDispatch()関数のオープンアクションとしてajaxLoginPost()を追加しますが、till is not works. ここに config.xml: <?xml version="1.0" encoding="UTF-8"?> <!-- @author Amit Bera --> <config> <modules> <Bluehorse_Ajaxlogin> <version>1.0.0</version> </Bluehorse_Ajaxlogin> </modules> <!-- rewrite Accont Controller --> <frontend> <routers> <customer> <args> <modules> <ajaxlogin before="Mage_Customer">Bluehorse_Ajaxlogin</ajaxlogin> </modules> </args> </customer> </routers> <layout> <updates> …

3
カスタムブロック「無効なブロックタイプ」
カスタムブロックがあり、2つの別々のブロックに分割しようとしています。 これが私のフォルダ構造です(app / code / local / MyNamespace / CustomerDashboard上): このモジュールの機能を2つの小さな部分に分割したいので、ファイルMyMenu.phpをブロックフォルダーとMyMenuController.phpコントローラーに追加しました。 次に、コードをコピー/貼り付けしDeliverydetails.phpてMyMenu.php、機能DeliverydetailsController.phpするMyMenuController.phpかどうかを確認しました。 私は自分のlocal.xmlに入って、モジュールとテンプレートへの参照を追加しました: <reference name="left"> <block type="customerdashboard/mymenu" name="customerdashboard.mymenu" template="customer/form/my-menu.phtml"/> </reference> コンテンツが表示されるはずのページにアクセスすると、モジュールが表示されるはずの場所に何もありませんが、exceptions.logを確認したところ、次のことがわかりました。 exception 'Mage_Core_Exception' with message 'Invalid block type: MyNamespace_CustomerDashboard_Block_Mymenu' in /var/www/html/mysite/public_html/app/Mage.php:595 Stack trace: #0 /var/www/html/mysite/public_html/app/code/core/Mage/Core/Model/Layout.php(495): Mage::throwException('Invalid block type...') #1 /var/www/html/mysite/public_html/app/code/core/Mage/Core/Model/Layout.php(437): Mage_Core_Model_Layout->_getBlockInstance('customerdashboa...', Array) #2 /var/www/html/mysite/public_html/app/code/core/Mage/Core/Model/Layout.php(472): Mage_Core_Model_Layout->createBlock('customerdashboa...', 'customerdashboa...') #3 /var/www/html/mysite/public_html/app/code/core/Mage/Core/Model/Layout.php(239): Mage_Core_Model_Layout->addBlock('customerdashboa...', 'customerdashboa...') …

2
Adminhtmlでコントローラーをオーバーライドする
現在、Mage_Adminhtml_CustomerのGroupControllerをオーバーライドしようとしているため、Customer Groupsメニューにカスタムフィールドを保存するためのコードを追加できます。あなたが思うようにそれは実際には機能しません。つまり、これまでのところ、私のコントローラーはMagentoによって無視されているようですが、私が犯した間違いはありません。以下がスニペットです。 <?xml version="1.0" ?> <config> [...] <admin> <routers> <adminhtml> <args> <modules> <Mynamespace_CustomerGroupReturnable before="Mage_Adminhtml">Mynamespace_CustomerGroupReturnable</Mynamespace_CustomerGroupReturnable> </modules> </args> </adminhtml> </routers> </admin> </config> そしてコントローラー: require_once 'Mage/Adminhtml/Customer/controllers/GroupController.php'; class Mynamespace_CustomerGroupReturnable_GroupController extends Mage_Adminhtml_Customer_GroupController { public function saveAction() { die(':D'); //just for testing } } 欠けているものを誰かが見ることができますか?ありがとう!

2
magento外でコントローラーアクションを呼び出す方法は?
magento外で実行されるphpスクリプトを作成できます。また、次のコードスニペットを使用して、magento機能を使用します。 define('ROOT', ''); $mage_php_url = ROOT.'app/Mage.php'; if (!empty($mage_php_url) && file_exists($mage_php_url) && !is_dir($mage_php_url)) { // Include Magento's Mage.php file. require_once ( $mage_php_url ); umask(0); Mage::app(); } これらのタイプのスクリプトでは、モデル、ブロック、ヘルパーなどを直接呼び出すことができますが、ここでコントローラーアクションを呼び出すにはどうすればよいでしょうか。任意の提案をいただければ幸いです。

2
コアコントローラーのpreDispatchメソッドのオーバーライド
コアコントローラーのpreDispatchメソッドをオーバーライドする必要があります。コアコントローラーはから継承しますMage_Checkout_Controller_Action。これには、呼び出す必要のあるpreDispatchメソッドがあります。オーバーライドしたいコアコントローラーから拡張しているため、を呼び出すだけではできませんparent::preDispatch()。これは、回避しようとしている機能を取り込むためです。 私の質問は-継承チェーンで2レベル高いオーバーライドされたメソッドを呼び出すにはどうすればよいですか、またはこれを間違った方法で行っているのですか? 更新 どうやらこれは動作します: Mage_Checkout_Controller_Action::preDispatch(); (その方法は静的ではありませんが、毎日新しいことを学んでいると思います。) 今私の質問は:私がオーバーライドしているクラスからすべての機能をコピーする必要なしにこれを行うより良い方法はありますか? 私がこれを試みた理由は、顧客がマルチシッピングチェックアウトを行った後にMagentoにアドレス割り当てを記憶させ、その後に去ろうとしたため、この道を進んでいたためです。(FWIW、私は正しい方向に進むためにリンクされた記事が素晴らしいことを発見しましたが、これを機能させるために実行する必要がある手順に関しては多くの欠けているようです)。 私がオーバーライドしているコントローラーは、回避する必要があるMultishipping IndexActionへのリダイレクトを持つコアMultiShippingControllerです。少し補足すると、私はこの機能をほぼ完全に取得しましたが、いくつかの問題を除いて(カートへの最初のアイテムの追加とMage_Sales_Model_Quote_Item-> getQuoteItem()がaddresses.phtmlテンプレートでnullを返すことに関して)、それは完全に異なる議論です)。

1
Magento + JQuery + Ajax-ブロック全体ではなく、カスタムモジュールの一部のみをリロードするにはどうすればよいですか?
私は最近、5日間でMagentoテンプレートのシンプルな製品コンフィギュレーターを作成するタスクを与えられました。ここで、いくつかの属性を選択し、価格を計算し、新しい画像をフェードインし、[カートに追加]ボタンを新しいものに変更します製品。 これまでは、PHPやJQueryの経験はなく、Magentoのいくつかの基本的な知識しかありませんでした(これまでにカスタムモジュールを行ったことはありません)。私の唯一のプログラミングの背景は、アクションスクリプト3のOOPゲームです。 これまでのところ、私のコードは何とか機能しています。いくつかのラジオボタンをクリックして変更できる変数がいくつかあり、それらの変数はajaxメソッドを介して更新されます。URLとして、レイアウトをロードしてレンダリングするだけのブロックインデックスメソッドが呼び出されます。返されたHTML(私のブロック全体)を、ブロック内の最も外側のdivの親に追加した後。それは機能しますが、変更をアニメーション化する方法を見つけることができないようで、ユーザーが1つのオプションを変更するたびにajaxがブロック全体を再構築する場合は少し遅いようです。 変更された部分をリロードしてスムーズに変更をアニメーション化し、ブロックに入力の変更を記憶させるよりエレガントな方法はありますか? ダウンロード用のすべてのファイルは次のとおりです。http://www.roflxd.de/doorconfig.zip 現在の外観を確認するためにサイト自体にアクセスする必要がある場合は、メッセージを送ってください:) 前もって感謝します! 私のブロックphtml: <?php $type = 'Simple'; $color = 'FFFFFF'; $size = '2500x1800'; if (isset($_POST['color'])) { $color = "#" . $_POST['color']; } if (isset($_POST['type'])) { $type = $_POST['type']; } if (isset($_POST['size'])) { $size = $_POST['size']; } $currentStoreUrl = Mage::getBaseUrl(); $currentProduct = $this->getProduct($type,$color,$size); $currentId = $currentProduct->getId(); …

4
管理者で[設定を保存]をクリックした後にアクションを呼び出す
[システム]-> [構成]-> [カタログ]で[構成の保存]をクリックした後、カスタムモジュールでコントローラーのアクションを呼び出すにはどうすればよいですか?(画像) モジュールの設定はそのセクション内にあり、構成が保存された直後にアクションを起動する必要があります。管理パネルのそのセクションでのみアクションを呼び出す必要があります-管理の別のセクションで[構成を保存]をクリックした場合、アクションを呼び出す必要はありません。 編集: アクションは、モジュールの保存された設定が正しいかどうかを確認し、構成が保存されるたびに他の計算を行う必要があります。 編集2: Fabian Blechschmidtが投稿した解決策を試しました。「構成の保存」をクリックした後、オブザーバーは機能しています(ログファイルにテキストが表示されます)。 config.xml: <config> ... <global> <events> <admin_system_config_changed_section_mysection> <observers> <mymodule> <type>singleton</type> <class>mymodule/observer</class> <method>handle_adminSystemConfigChangedSection</method> </mymodule> </observers> </admin_system_config_changed_section_mysection> </events> </global> ... </config> Model / Observer.php: class My_Module_Model_Observer { public function handle_adminSystemConfigChangedSection() { Mage::log('Test: oberver is working!'); //I tried this but it doesn't actually trigger the …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.