【问题标题】:How to get from url "index.php?option=com_event&view=delete&id=17" the id content如何从 url "index.php?option=com_event&view=delete&id=17" 获取 id 内容
【发布时间】:2014-01-15 08:53:58
【问题描述】:

我正在实现一个函数,从前端 joomla 中删除数据库表中的一行。

基本上我用 url index.php?option=com_event&view=delete&id=17 创建一个链接,一旦点击链接,它会调用控制器中的函数 delete(),在控制器中它会调用 delete_event()模型。在模型中,delete_event() 将从 url id 中获取事件 id,并删除具有此 id 的事件。

首先,我不知道逻辑是否正确。

其次,delete_event()模型中如何从url中获取事件id?

我正在尝试:

$app = JFactory::getApplication();
$menu  = $app->getMenu();

我不认为这是正确的。

请帮助我。 谢谢。

【问题讨论】:

    标签: joomla


    【解决方案1】:

    你说的流程符合 Joomla 标准。

    在您的控制器函数中,您可以使用以下方法获取输入 id。

    $removal_id = JRequest::getInt('id',0);
    

    通过这个控制器,您可以将其作为参数传递给模型或直接在模型上检索。

    $model  = $this->getModel('Article');//your model name
    $model->delete_event($removal_id); 
    

    确保您已在表单中包含 Joomla HTML 令牌,并在您的控制器函数中检查该令牌以防止直接访问 url。

    检查 Joomla 令牌之类的。

    JRequest::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
    

    删除后,您需要重定向回视图,只需使用like。

    $this->setRedirect('url','message');
    

    对于更多标准,您可以使用 Joomla 原生函数来完成任务,为此您必须正确设置表结构然后检查this

    希望它有意义..

    【讨论】:

    • 嗨,我如何将参数从控制器传递给模型。
    • 而且流程是这样的,控制器调用模型函数,控制器怎么传参数给模型?
    • $model= & JModelLegacy::getInstance('Event','EventModel'); 有什么区别?和 $this->getModel('Event');//这是我的模型名称。
    • 在我的 delete_event() 函数定义中,我没有设置参数..我需要这样做吗?
    • 如果你使用 $model= & JModelLegacy::getInstance('Event','EventModel');它也与使用 $this-> 更好地使用这个 bcoz 现在你在那个组件中如果组件模型名称像 event.php 默认情况下它是一样的,所以不需要使用 JModelLegacy 调用:,如果你使用来自控制器的参数进行调用建模然后应该有参数来检索定义中的那个。
    【解决方案2】:

    地址中的那些变量作为 GET 变量传递到页面中。根据Joomla docs,可以使用JRequest::getVar('id')。带有第二个参数的替代形式允许您轻松处理未设置 id 的情况。

    编辑:正如 Lodder 所指出的,以上内容适用于 updated docs link,它可能更相关。

    【讨论】:

    • 我要在 delete_event() 或 delete() 中调用它吗?
    • 这意味着,在模型中,还是在控制器中?
    • @user2870092 控制器将是看到请求的人,因此应该负责调度删除。
    • @esel +1 回答 Joomla 标准!。
    • 是的,很高兴看到已使用 Joomla 标准;),但是仅当 OP 使用 Joomla 1.5 或 2.5,而不是 Joomla 3.x 时,才建议使用此方法
    【解决方案3】:

    我希望这将有助于从 URL 获取 id

    if(isset($_GET['id']))
    {
    $id = $_GET['id'];
    }
    

    然后将 $id 传递给模型以进行类似这样的进一步处理

    delete_event($id);
    

    更具体地为 Joomla 试试这个

    $myabsoluteurl=JURI::base(); //for Absolute URL
    $mycurrenturl=JURI::current(); //for Current URL
    

    一旦你得到当前的 URL,你就可以使用 php explode 函数将它按部分划分

    http://www.w3schools.com/php/func_string_explode.asp

    【讨论】:

    • 它不是 Joomla 标准
    • 标准我也写过
    • 对于使用 $_GET['id'] 的这种情况,不需要绝对 url 或当前 url。不建议在 Joomla 中接收 Joomla 的原生选项(如 JRequest 正在使用的)。
    • 如果您手头有完整的当前 URL,您可以使用 explode() 函数轻松获得所需的部分。身份证在你的情况下。在编程中,你可能有不止一种方法来完成你可以使用 JRequest 库的任务,但我已经多次使用 JURI 库完成了所需的任务
    • @ITConflux 我们都知道它可以工作,但这不是 Joomla 编码应该有的样子。拥有一个框架背后的想法是使用它来确保代码安全、一致、可维护且易于被其他编码人员理解。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-10
    • 1970-01-01
    • 2015-10-23
    • 1970-01-01
    • 2014-12-11
    • 1970-01-01
    • 2012-05-10
    相关资源
    最近更新 更多