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的主要内容,如果未能解决你的问题,请参考以下文章

CakePHP read() 函数读入的格式数据

如何使用 CakePHP3 ORM 获取字符串格式的 where 子句?

CakePHP 2.2.1 - 在表单上显示 CakePHP 错误 - 自定义验证

CakePHP 验证错误未出现

CakePHP 3.5 400 错误请求

列出 CakePHP 文件上传错误代码