0

jqueryモーダルダイアログ内で動的に構築するフォームがあります。

var $myform = jQuery("<form id='EditForm' method='post' action='index.php?option=com_mycomponent&task=edit'></form>");
...

コントローラーのメソッドによって処理されedit、目的のページにリダイレクトされます。

JFactory::getApplication()->redirect(JRoute::_('index.php?option=com_mycomponent'));

このフォームからの送信は機能し、ルーティング先の URL を除いてすべて問題ありません。そのはず

index.php?option=com_mycomponent(または SEF の URL)

しかし、代わりに私は得る:

components/mycomponent/

技術的には同じページですが、その後にしようとする他の操作を台無しにします。javascript でフォームを作成しているという事実が問題の一部であると推測しています。入れたらきっと

<?php echo JRoute::_('index.php?option=com_mycomponent') ?>

それはうまくいくかもしれません。しかし、これは別のjavascriptファイルのフォームであり、phpが利用できないため、それはできません。私にできることはありますか?

4

1 に答える 1

0

取得した URL は正しいです。の SEF URL ですindex.php?option=com_mycomponent

SEF URL がよりきれいになるように、Itemid (メニュー項目) を追加できます。または、JRoute の部分をスキップして、SEF 以外の URL を取得することもできます。

更新: 現在アクティブなメニュー itemid を取得するには、現在の URL から JRequest (非推奨) または JInput ( http://docs.joomla.org/Retrifying_request_data_using_JInput )を使用して取得します。

$itemid = JFactory::getApplication()->input->get('Itemid', '0', 'INT');

しかし、アクティブなメニュー項目がある場合、JRoute はそれ自体を既に追加しているはずです。

于 2013-04-30T08:33:09.243 に答える