joomla 2.5 (joomla 3 でも動作) コンポーネントを作成しました。
コンポーネントをテストするために、メニュー項目「mycomtest-main」を作成し、そのメニュー項目ページにコンポーネントを配置しました。したがって、完全なローカル テスト URL は「localhost/joomla/mycomtest-main」です。
コンポーネントには多くのアイテムがリストされ、クリックされたエントリ フォームが表示されると、その mvc コンポーネントのエントリ フォーム ビューであるボタンが表示され、JRoute を使用したため、URL は「localhost/joomla/mycomtest-main?task=edit&id=4」になります。 :_("index.php?...") 安全な URL を保持します。
したがって、上記のエントリ フォームに入力して送信すると、デフォルト ビュー (localhost/joomla/mycomtest-main) にリダイレクトされますが、残念ながら URL は localhost/joomla/component/mycomtest-main/ になり、代わりに localhost/joomla/mycomtest-main になります。
私のコンポーネントエントリフォームビューは以下のようになります -
<form action="index.php" method="post" name="adminForm" id="adminForm" enctype="multipart/form-data">
<input type="hidden" name="option" id="option" value="<?php echo $_REQUEST['option']; ?>" />
<input type="hidden" name="task" id="task" value="save" />
<input type="hidden" name="id" id="id" value="<?php if($row!=NULL){ echo $row->id; }?>" />
<input type="hidden" name="page" id="page" value="<?php echo JRequest::getVar('page'); ?>" />
.............rest of the html contents along with submit button
</form>
また、私のmvcコンポーネントのcontroller.phpファイルでは、この方法でjrouteをうまく使用しました-
function save()
{
$model = $this->getModel('entry');
if($model->store())
{ $msg = "saved successfully"; $type = 'message'; }
else
{ $msg = 'error found'; $type = 'error';
}
$urlSet=JRoute::_("index.php?option=". $_REQUEST['option']."");
$this->setRedirect($urlSet, $msg, $type);
}
では、エントリ ビュー フォームが送信された後、以下の正しい URL を含むメニュー項目ページにリダイレクトされるようにするにはどうすればよいでしょうか? -
http://localhost/joomla/mycomtest-main/