2014-02-03 2 views
0

Я пытаюсь создать в CakePHP простой form отдельностоящий от model, у меня возникли проблемы с сгенерированного URL:CakePHP: Недопустимые URL формата

я получаю это: (не работает -> PayPal в нижнем регистре)

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'); ?> 

UPDATE:

Если я пытаюсь это:

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

Это работа, но я не хочу писать на все мои взгляды контрольного контролера, есть ли другой способ сделать это?

btw Я на сервере Linux, может быть проблема case sensitive?

Спасибо,

ответ

0

Проблема здесь была путаница между Paypal's plugin и от имени моего контроллера PaypalController.

public $name = 'Paypal'; 

Когда я называю paypal (в нижнем регистре) CakePHP пытается вызвать плагин вместо моего PaypalController класса.

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

Так, чтобы исправить эту проблему, я должен был изменить имя моего контроллера PaypalPaymentProcessor

2

CakePHP конвенция хочет имя контроллера в URL, чтобы быть в нижнем регистре и подчеркнул

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

Он работает даже с заглавными именами контроллеров, но вы должны установить его вручную в любой форме

+0

Если я называю этот URL http://local.dev/integration-cloud/public_html/paypal/checkout (в нижнем регистре) не работает для меня и имеет строчные буквы и подчеркивается как CakePHP хочет, не знаю, почему – ZoT

+0

да, но контроллер также должен быть множественным. Если ваша модель «Paypal», ваш контроллер должен быть «PaypalsController» и ваш url local.dev/integration-cloud/public_html/paypals/checkout – arilia

+0

У меня нет модели (она не нужна), потому что я использую 'false 'как первый параметр в методе' create' – ZoT

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'); ?> 
+0

Где вы находите, что второй вариант - это те, которые рекомендовал CakePHP? – ZoT

+0

Да, рекомендуется использовать массив (controller => ... потому что, если хост отличается, ссылка может не работать, если вы используете тип/Paypal/checkout типа url в cakephp –

Смежные вопросы