0

管理者に追加されたリンクcategory_idを追加するにはどうすればよいですか?(Joomla 2.5)

1つまたは複数の関数を書き込むことができJToolBarHelper::addNew('select.add');ます...たとえば、

index.php?option = com_pictures&view = select&layout = edit&category_id = 14

助けてください。前もって感謝します

返信DavidF:

こんにちは、デビッドF.私はほとんどそれを手に入れました。
「追加」をクリックするとが表示さcategory_id=14れ、「編集」、「保存」、「保存を閉じる」をクリックしても残りは機能しませんでした...-category_id=0
プログラミングを行っています。次に例を示します。

...
protected $catid;

public function __construct($config = array()) {
    parent::__construct($config);

    if (empty($this->catid)) {
        $this->catid = JRequest::getInt('category_id', 0);
    }
}

protected function allowAdd($data = array()) {
    $user = JFactory::getUser();
    $categoryId = JArrayHelper::getValue($data, 'catid', JRequest::getInt('filter_category_id'), 'int');
    $allow = null;

    if ($categoryId) {
        $allow = $user->authorise('core.create', $this->option . '.category.' . $categoryId);
    }

    if ($allow === null) {
        return parent::allowAdd($data);
    } else {
        return $allow;
    }
}

protected function allowEdit($data = array(), $key = 'id') {
    $recordId = (int) isset($data[$key]) ? $data[$key] : 0;
    $categoryId = 0;

    if ($recordId) {
        $categoryId = (int) $this->getModel()->getItem($recordId)->catid;
    }

    if ($categoryId) {
        return JFactory::getUser()->authorise('core.edit', $this->option . '.category.' . $categoryId);
    } else {
        return parent::allowEdit($data, $key);
    }
}

protected function getRedirectToItemAppend($recordId = null, $urlVar = 'id') {
    $append = parent::getRedirectToItemAppend($recordId);
    $append .= '&category_id=' . $this->category_id;

    return $append;
}

protected function getRedirectToListAppend() {
    $append = parent::getRedirectToListAppend();
    $append .= '&category_id=' . $this->category_id;

    return $append;
}
4

1 に答える 1

0

お探しの関数はJControllerの一部であり、コントローラーに追加する必要があると思います。あなたの場合、これはURLのビュー名に基づくselect.phpコントローラーである可能性があります。

この良い例は、categoriesコンポーネント、特にadministrator / components / com_categories / controllers/category.phpで見ることができます。

以下はcom_categoriesのコードです。拡張機能の名前を「category_id」に変更し、現在のクラスの代わりにJInputから値を取得したい場合があります。

/**
 * Gets the URL arguments to append to an item redirect.
 *
 * @param   integer  $recordId  The primary key id for the item.
 * @param   string   $urlVar    The name of the URL variable for the id.
 *
 * @return  string  The arguments to append to the redirect URL.
 *
 * @since   1.6
 */
protected function getRedirectToItemAppend($recordId = null, $urlVar = 'id')
{
    $append = parent::getRedirectToItemAppend($recordId);
    $append .= '&extension=' . $this->extension;

    return $append;
}

/**
 * Gets the URL arguments to append to a list redirect.
 *
 * @return  string  The arguments to append to the redirect URL.
 *
 * @since   1.6
 */
protected function getRedirectToListAppend()
{
    $append = parent::getRedirectToListAppend();
    $append .= '&extension=' . $this->extension;

    return $append;
}

*編集:

また、フォームの一部として追加する必要があります。これは簡単ですが、重要な部分です。フォームに値を含む非表示の入力があることを確認するか、フォームのアクションセクションのURLに追加してください。

<form action="<?php echo JRoute::_('index.php?option=com_component&layout=edit&id='.(int) $this->item->id . '&category_id='.$this->category_id); ?>" method="post" name="adminForm">

またはこれを使用します:

<input type="hidden" name="category_id" value="<?php echo $this->category_id; ?>" />

何が起こるかをさらに説明するために、アイテムをクリックしてフォームに移動すると、必要な変数を追加する可能性があります。次に、それをフォームに追加して、アイテムの1つがクリックされたときに、フォームとともに送信されるようにします。Joomlaはこのフォームを処理し、クリックされたツールバーボタンに応じて保存するかどうかを決定します。次に、Joomlaはフォームまたはリストビューにリダイレクトします。コントローラに関数がないと、変数は失われます。

于 2013-02-04T21:34:21.267 に答える