CakePHP:格式不正确的URL

时间:2014-02-03 14:30:29

标签: php forms cakephp view action

我正在尝试在与form分离的CakePHP中创建一个简单的model,我遇到了生成的网址问题:

我明白了:(不起作用 - > paypal小写)

http://local.dev/integration-cloud/public_html/paypal/checkout

而不是:(作品 - > Paypal驼峰案例)

http://local.dev/integration-cloud/public_html/Paypal/checkout

这是我的代码:

贝宝/ view.ctp

<?php echo $this->Form->create(false, array('action' => 'checkout')); ?>
<?php echo $this->Form->end('Finish'); ?>

更新

如果我试试这个:

<?php echo $this->Form->create(false, array('url' => array('controller' => 'Paypal', 'action' => 'checkout'))); ?>
<?php echo $this->Form->end('Finish'); ?>

这是有效的,但是我不想在我的所有视图上写下引用的控制器,还有另外一种方法吗?

btw我在Linux服务器上,可能是case sensitive问题吗?

谢谢,

3 个答案:

答案 0 :(得分:2)

cakephp约定希望url中的控制器名称为小写和下划线

http://book.cakephp.org/2.0/en/getting-started/cakephp-conventions.html#url-considerations-for-controller-names

它甚至可以使用大写控制器名称,但您必须在每种形式中手动设置

答案 1 :(得分:1)

如果您愿意,可以执行以下操作:

<?php echo $this->Form->create(false, array('url' => '/Paypal/checkout')); ?>
<?php echo $this->Form->end('Finish'); ?>

但CakePHP建议使用以下内容:

<?php echo $this->Form->create(false, array('url' => array('controller' => 'Paypal', 'action' => 'checkout'))); ?>
<?php echo $this->Form->end('Finish'); ?>

答案 2 :(得分:0)

此处的问题是Paypal's plugin与我的控制器PaypalController的名称混淆。

public $name = 'Paypal';

当我调用paypal(小写)时,CakePHP尝试调用插件而不是我的PaypalController类。

http://local.dev/integration-cloud/public_html/paypal/checkout

因此,要解决此问题,我必须将控制器的名称更改为PaypalPaymentProcessor