2

我喜欢从后端列表视图中创建一个新项目。对于新项目,我想传递一个取决于当前列表(实际年份)的默认值。

我如何使用 Joomla 2.5 做到这一点?

我可以通过覆盖 add() 方法将值传递给当前控制器上的新项目的控制器(通过 JRequest::getInt('AValue') )。

public function add()
{
    $AValue = JRequest::getInt('AValue');
    if($AValue == null)
    {
        $AValue = 2012;
    }
    parent::add();
}

我试图获取模型并为其分配值,但 getModel() 方法返回的对象与最终视图中使用的对象不同。

任何想法如何获得新项目表格的价值?

谢谢

4

2 回答 2

0

情况:有一个足球赛季期间的事件列表。如果我从列表中选择 Saison,我将获得另一个列表,其中包含所有分配给该 saison 的事件。Saison 期间的事件列表由以下人员调用:

com_mycomponent/view=eventlists&saisonid=2011

这将向我显示分配给 2011 赛季的所有事件的列表

现在我想为 2011 赛季创建一个新活动。

添加按钮将调用:eventlist.add

MyComponentControllerEventList extends JControllerForm

在添加操作期间,我想以某种方式将 saison (2011) 传递给表单。

模型包含:

public function getTable($type = 'EventList', $prefix = 'MyComponentTable', $config = array())
{
    return JTable::getInstance($type, $prefix, $config);
}   

public function getForm($data = array(), $loadData = true) 
{       
// Get the form.        
$form = $this->loadForm('com_mycomponent.eventlist', 'eventlist', array('control' => 'jform', 'load_data' => $loadData));
if (empty($form))
{           
    return false;       
}       
return $form;   
}   

protected function loadFormData()   
{       
    // Check the session for previously entered form data.      
    $data = JFactory::getApplication()->getUserState('com_mycomponent.edit.eventlist.data', array());
    if (empty($data)){          
    // generate an empty item
        $data = $this->getItem();
    }       
    return $data;
}

所以它是直截了当的。

视图也是一种默认值。

public function display($tpl = null) 
{
    // get the Data
    $form = $this->get('Form');
    $item = $this->get('Item');
    // Check for errors.
    if (count($errors = $this->get('Errors'))) 
    {
        JError::raiseError(500, implode('<br />', $errors));
        return false;
    }
    // Assign the Data
    $this->form = $form;
    $this->item = $item;

    // Display the template
    parent::display($tpl);
}

对此有什么想法吗?谢谢

于 2012-09-27T09:27:41.237 回答
0

你可以试试这个-

http://docs.joomla.org/API15:JRequest/setVar

public function add()
{
    $AValue = JRequest::getInt('AValue');
    if($AValue == null)
    {
        JRequest::setInt('AValue',date('Y'));
    }
    parent::add();
}
于 2012-10-12T18:09:16.350 回答