【问题标题】:CakePHP 1.3 - Send non-form data to controller with js helperCakePHP 1.3 - 使用 js 助手向控制器发送非表单数据
【发布时间】:2013-11-05 20:42:31
【问题描述】:

我的视图中有许多动态按钮,如下所示:

<ul id="dashboard_list">
  <li id="id_100" class="btn btn-primary">
    <a id="id_100" href="/plugin_name/controller_name/action_name/100">Default View</a>
  </li>
  <li id="id_200" class="btn btn-primary">
    <a id="id_200" href="/plugin_name/controller_name/action_name/200">Second View</a>
  </li>
  <li id="id_300" class="btn btn-primary">
     <a id="id_300" href="/plugin_name/controller_name/action_name/300">Third View</a>
  </li>
</ul>

以上链接是使用JSHelper创建的,如下:

echo $this->Html->link($view->name, '/plugin_name/controller_name/action_name/'. $view->id, array('class' => 'ajax-link', 'id'=> $view->id));

我正在使用我在研究时发现的以下脚本:

// onClick function
function onClick(){
    $('#view_container').load($(this).attr('href'), onSuccess); 
    return false;
}

// activate ajax links to call the onClick function
$('.ajax-link').live('click', onClick);

// onSuccess-callback function
function onSuccess(){}

现在,在我的控制器/动作中,我正在对数据进行简单的检查,如下所示:

function actionName() {
    if ($this->data != null) {
        die('We has data!');
    }
    else
    {
        die('We has no data.');
    }
}

我的#view_container 元素在每次点击时都会正确更新为“我们没有数据”。所以,我显然没有在视图和控制器之间传递链接的视图 ID 号(数据)。

谁能提供一些关于如何在 CakePHP 1.3 中实现此功能以访问控制器中选定的 id(变量)的方向?我似乎主要是找到表单提交示例(或只是死链接),不幸的是我没有升级 cakePHP 的选项。

仅供参考:适当的帮助程序、脚本和 js->writeBuffer 都已包含在内。

感谢您提前回复!

【问题讨论】:

  • 到目前为止,这是我的解决方案,它可能不遵循 cakePHP 方法,所以如果您有更“蛋糕”的方式来实现这一点,请随时做出回应。我有兴趣学习 alt 方法。由于我将 view_id 传递给链接中的 URL:href="/plugin_name/controller_name/action_name/300" 我只是调整了从 URL 中获取 id 作为 $view_id 的操作:function actionName($view_id) { if ($view_id != null) { die('We has data!'); } else { die('We has no data.'); } }

标签: ajax jquery cakephp-1.3


【解决方案1】:

重写你的函数如下:

function actionName($id) {
    debug($id);
    if ($this->data != null) {
        die('We has data!');
    }
    else
    {
        die('We has no data.');
    }
}

如果您需要在 URL ex 中执行多个变量:

href="/plugin_name/controller_name/action_name/300/yellow/bannana"

那么你的函数应该是这样的:

function actionName($id,$color,$fruit) {
}

【讨论】:

  • debug($id) 返回值,但无法通过 $this->data 访问该值。我可以测试 if($id != null) 并得到“我们有数据!”结果,但我不确定为什么我不能使用 cakes 标准方法访问该值。谢谢!
  • 因为 $this->data 用于将信息获取到同一视图,但您重定向到不同的 URL。页面加载时没有数据。您可以使用下拉菜单和常规提交按钮轻松完成此操作,下拉菜单将出现在 $this->data 中,或者此处的页面包含有关多个按钮的更多信息并检测哪些被点击:stackoverflow.com/questions/10172522/…
  • 我明白了,谢谢。我实际上已经得出结论,这是独一无二的,因为它不是一个表单,但我并没有真正考虑使用多个提交按钮。我的挑战是为 1.3 找到正确的方法,因为我一直在使用那个版本。
猜你喜欢
  • 1970-01-01
  • 2011-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-21
  • 1970-01-01
  • 2022-01-16
  • 2023-03-27
相关资源
最近更新 更多