【问题标题】:joomla 2.5 pass default value to new itemjoomla 2.5将默认值传递给新项目
【发布时间】:2012-09-26 09:36:57
【问题描述】:

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

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

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

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

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

知道如何将值添加到新项目的表单中吗?

谢谢

【问题讨论】:

  • 不能直接在表单中传值吗?你在使用 JTable 吗?要了解您在做什么,您的组件需要更多信息/代码。

标签: joomla


【解决方案1】:

情况: 有一个足球赛期间的事件列表。如果我从列表中选择 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);
}

对此有什么想法吗? 谢谢

【讨论】:

  • 附加信息:数据库中的一个字段指定事件所属的季节。
【解决方案2】:

你可以试试这个-

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

public function add()
{
    $AValue = JRequest::getInt('AValue');
    if($AValue == null)
    {
        JRequest::setInt('AValue',date('Y'));
    }
    parent::add();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多