Joomla “如何从url获取”;php?option=com\u事件&;查看=删除&;id=17“;id内容

Joomla “如何从url获取”;php?option=com\u事件&;查看=删除&;id=17“;id内容,joomla,Joomla,我正在实现一个函数,从前端joomla删除数据库表中的一行 基本上,我创建了一个url index.php?option=com_event&view=delete&id=17的链接,一旦单击该链接,它将调用controller中的函数delete(),其中它将调用模型中的delete_event()。在模型中,delete_event()将从url id获取事件id,并删除具有此id的事件 首先,我不知道逻辑是否正确 其次,如何在delete_event()模型中从url获取事件id 我正在努

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

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

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

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

我正在努力:

$app = JFactory::getApplication();
$menu  = $app->getMenu();
我认为这是不对的

请帮帮我。
谢谢。

我希望这将有助于从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函数将其分割成部分


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


编辑:正如Lodder所指出的,以上是针对Joomla版本的您所说的流程符合Joomla标准

在控制器功能中,您可以使用以下方法获取输入id

$removal_id = JRequest::getInt('id',0);
从该控制器,您可以将其作为参数传递给模型或直接在模型上检索

$model  = $this->getModel('Article');//your model name
$model->delete_event($removal_id); 
确保表单中包含了Joomla HTML标记,并在控制器函数中检查该标记,以防止直接访问url

检查Joomla token,如图所示

JRequest::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
删除后,您需要重定向回视图,只需使用like

$this->setRedirect('url','message');
对于更多的标准,您可以使用Joomla本机函数来完成任务,因此您必须正确设置表结构,然后检查


希望它有意义。

它不是Joomla Standard,我已经编写了标准,不需要绝对url或当前url,因为在这种情况下,您使用的是$\u GET['id']。这在Joomla中不建议用于接收post数据Joomla的本机选项,如JRequest正在使用。如果您手头有完整的当前URL,您可以使用explode()函数轻松获得所需的部分。你的身份证。在编程中,您可能有多种方法来完成任务,您可以使用JRequest库,但我已经使用JURI库完成了许多所需的任务times@ITConflux我们都知道它是有效的,但Joomla编码不应该如此。拥有一个框架背后的想法是使用它来确保代码是安全的、一致的、可维护的,并且易于其他编码人员理解。我要在delete_event()或delete()中调用它吗?这意味着,在模型中还是在控制器中?@user2870092控制器将是看到请求的那个,因此,它应该负责发送删除。@esel+1带有Joomla标准的答案!。是的,很高兴看到使用了Joomla标准;),但是,如果OP使用的是Joomla 1.5或2.5,而不是Joomla 3.xHi,则建议使用此方法。我如何从控制器将参数传递给模型。如果流是这样的,控制器调用模型函数,控制器如何将参数传递给模型?$model=&JModelLegacy::getInstance('Event','EventModel')之间有什么不同;和$this->getModel('Event')//这是我的模型名。在我的delete_event()函数定义中,我没有设置参数。我需要这样做吗?如果您使用$model=&JModelLegacy::getInstance('event','EventModel');这与使用$this->现在最好使用这个bcoz是一样的,如果组件的模型名默认为event.php,那么它不需要使用JModelLegacy:调用,如果在控制器到模型之间使用arment,那么在定义中也应该有参数来检索它。