在jQuery函数中使用来自cakeHP的Form输入


Use a Form input from cakePHP in a jQuery function

我是cakeHP的新手,我被困在这里,经过长时间的搜索,我找不到我的解决方案。所以基本上我有一个按钮,可以在cakepp:上无处不在

echo $this->Form->create('Fightermove');
echo $this->Form->input('direction',array('options' => array('north'=>'north','east'=>'east','south'=>'south','west'=>'west'), 'default' => 'east'));
echo $this->Form->end('Move');

但当我在jQuery上使用它来动态添加按钮时,它甚至不会出现:

$("#"+(CoordXJQ-1)+"-"+CoordYJQ).append('<?php 
    echo $this->Form->create('Fightermove');
    echo $this->Form->input('direction',array('options' => array('north'=>'north','east'=>'east','south'=>'south','west'=>'west'), 'default' => 'east'));
    echo $this->Form->end('Move');
    ?>'); 

当我删除Form->输入行时,它确实显示了一些内容。

如何使这个cakeHP函数在jQuery上工作?或者也许还有另一种方法可以做到这一点(但我仍然很好奇如何解决这个问题!)?

谢谢!

正如Raphaël Vigée已经说过的,您不能在jQuery中运行PHP代码。但你可以做的是:

在您的视图文件(.ctp)中,只需在一些隐藏的容器中输出表单,如

<div class="hiddenContainer" style="display:none">
  <?php
    echo $this->Form->create('Fightermove');
    echo $this->Form->input('direction',array('options' => array('north'=>'north','east'=>'east','south'=>'south','west'=>'west'), 'default' => 'east'));
    echo $this->Form->end('Move');
  ?>
</div>

然后在您的JavaScript文件中,您可以进行

var $clone = $( ".hiddenContainer" ).children().clone();
$("#"+(CoordXJQ-1)+"-"+CoordYJQ).append($clone);

您不能在页面渲染后执行cakephp代码,但您可以用javascript编写php代码,它将在页面加载时执行。您的javascript代码似乎有引号问题尝试以下代码

$("#"+(CoordXJQ-1)+"-"+CoordYJQ).append("<?php 
    echo $this->Form->create('Fightermove');
    echo $this->Form->input('direction',array('options' => array('north'=>'north','east'=>'east','south'=>'south','west'=>'west'), 'default' => 'east'));
    echo $this->Form->end('Move');
    ?>");  

我认为您想要的是获得CakePHP标准中的表单。然而,正如每个人都提到的那样,您根本无法使用JavaScript编写任何服务器端代码。

我建议,这充其量是极其幼稚的。如果你不知道CakePHP标准,那么用CakePHP的表单制作一个网页。在浏览器中打开它,右键单击查看其HTML并查看源代码,然后将该HTML复制到jquery代码中。

通过这种方式,你将获得一个蛋糕创建的表单,你可以根据自己的需要进行修改。

我不会这样做的。我会使用Clansi的解决方案