CakePHP:格式错误的 URL
Posted
技术标签:
【中文标题】CakePHP:格式错误的 URL【英文标题】:CakePHP: Bad format URLs 【发布时间】:2014-02-03 14:30:28 【问题描述】:我正在尝试在Cakephp
中创建一个与model
分离的简单form
,但生成的网址有问题:
我明白了:(不起作用 -> 贝宝小写)
http://local.dev/integration-cloud/public_html/paypal/checkout
而不是这个:(作品 -> Paypal 骆驼案)
http://local.dev/integration-cloud/public_html/Paypal/checkout
这是我的代码:
Paypal/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'); ?>
这是工作,但我不想在我的所有视图上写引用的控制器,还有其他方法吗?
顺便说一句,我在 Linux 服务器上,可能是 case sensitive
问题?
谢谢,
【问题讨论】:
【参考方案1】:cakephp 约定希望 url 中的控制器名称为小写并加下划线
http://book.cakephp.org/2.0/en/getting-started/cakephp-conventions.html#url-considerations-for-controller-names
它甚至可以使用大写的控制器名称,但您必须在每种形式中手动设置它
【讨论】:
如果我将此 URL 称为 local.dev/integration-cloud/public_html/paypal/checkout(小写)对我不起作用并且是小写和下划线,正如 CakePHP 想要的那样,不知道为什么 是的,但控制器也必须是复数。如果您的模型是Paypal
您的控制器应该是 PaypalsController
和您的网址 local.dev/integration-cloud/public_html/paypals/checkout
我没有模型(不需要它),因为我在 create
方法中使用 false
作为第一个参数
如果你愿意,你可以随时为这样的名字创建变形规则
@Eagle 喜欢吗?我想你忘记了这个例子,如果你能给我一些例子,我的情况会很棒【参考方案2】:
如果你愿意,你可以这样做:
<?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'); ?>
【讨论】:
你在哪里发现第二个选项是 CakePHP 推荐的? 是的,建议使用 array(controller => ... 因为如果主机不同,如果您在 cakephp 中使用 '/Paypal/checkout' 类型的 url,链接可能无法正常工作【参考方案3】:这里的问题是Paypal's plugin 和我的控制器名称PaypalController
之间的混淆。
public $name = 'Paypal';
当我调用 paypal
(小写)时,CakePHP 试图调用插件而不是我的 PaypalController
类。
http://local.dev/integration-cloud/public_html/paypal/checkout
所以要解决这个问题,我必须将控制器的名称更改为 PaypalPaymentProcessor
【讨论】:
以上是关于CakePHP:格式错误的 URL的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 CakePHP3 ORM 获取字符串格式的 where 子句?