我是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的解决方案