0

tmpl/default.php に単純なフォームがあります。

<form id='AddForm' action="<?php echo JRoute::_('index.php?option=com_mycomponent&task=addcam'); ?>" >
            <p>
            <label for="CamName">Name:
            </label>
            <input type="text" id="CamName" name="cam_name" />
            </p>
            <button type='submit' class='submit_cam' name='addcam' value='Add'>Add</button>
            <button type='reset' class='cancel_changes' name='cancel_changes' value='Cancel'>Cancel</button>
        </form>

私の controller.php ファイルで、値を処理しようとしています:

function addcam()
{
    $add_name=JRequest::getString('cam_name');
    $model = &$this->getModel();
    $model->AddWebcam($add_name); //send to model to add to DB
}

私のモデルでは、クエリの結果を返すだけです。この実装では、空のページにルーティングされるだけです。現在のページを更新したいと思います。通常はこれを行いますaction=""が、私の場合addcamはコントローラーで呼び出される関数にルーティングする必要があります。または、これを行うより良い方法はありますか?

4

1 に答える 1

1

タスクに指示するときの Joomla での一般的なテクニックは、その関数に最後にビューへの完全なリダイレクトをさせることです。これにより、ページの更新によるデータの再送信が回避され、クライアントの URL がよりクリーンになります。これを行うには、次のことを試してください。

function addcam()
{
    $add_name=JRequest::getString('cam_name');
    $model = &$this->getModel();
    $model->AddWebcam($add_name); //send to model to add to DB
    JFactory::getApplication()->redirect(JRoute::_(index.php?option=com_mycomponent&view=whatever));
}

明らかに、JRoute ビットを実際に必要な URL に更新します。必要に応じてメッセージを含めることもできます (「保存しました!」など): http://docs.joomla.org/JApplication::redirect/1.6

于 2013-04-22T17:42:03.737 に答える