如何从url" index.php获取?option = com_event& view = delete& id = 17" id内容

时间:2014-01-15 08:53:59

标签: joomla

我正在实现一个从前端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();

我不认为这是正确的。

请帮帮我。 谢谢。

3 个答案:

答案 0 :(得分:1)

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

编辑:正如Lodder所指出的,以上是针对Joomla版本< 2.5(我的错误)。这是2.5+的Joomla docs,可能更相关。

答案 1 :(得分: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'));

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

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

对于更多标准,您可以使用Joomla本机函数来执行任务,因为您必须正确设置表结构,然后检查this

希望它有意义..

答案 2 :(得分:0)

我希望这有助于从网址

获取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