торт php вызывает функцию, но контроллер не выполнит ее - PullRequest
0 голосов
/ 06 февраля 2019

Я из codeIgniter, но для стажировки мне нужно отладить текущий веб-сайт с использованием cakePHP.

Я знаком с mvc, но в настоящее время застрял и не могу найти какое-либо решение даже после поиска.

Я хочу иметь возможность вызывать функцию в контроллере (простая задача с codeIgniter), но во время отладки я заметил, что был вызван контроллер, но не функция:

    <?php
 App::uses('AppController', 'Controller');
class FournisseursController extends AppController { //debug stop here
    public $helpers = array('Html', 'Form');    
    public function index() {
        $this->set('Personnes', $this->Fournisseur->find('all'));
    }     

    public function addFournisseur() {
        //contain some code , but not usefull for this problem
        }
    }
}
?>

после 2-й строки отображается связанный вид (это странная концепция - всегда показывать вид, но я думаю, что торт php работает именно так).и отладка даже не запускается для целевой функции.

Я вызываю ее из представления:

<form action="../../Fournisseurs/addFournisseur" method="post">
<input type="submit">
</form>

Я знаю, что не очень хорошо вызывать контроллер из представления, но в этом случае яМне нужно, чтобы пользователь ввел некоторые данные, чтобы отправить их в базу данных, я не знаю другого способа.Я уже прочитал документацию по контроллеру, и это не помогло.

И последнее, если я изменю имя функции в контроллере, контроллер не будет вызван: сообщение об ошибке объясняет, что метод не существует(поэтому для меня контроллер знает, что я хочу вызвать функцию, потому что контроллеру нужно, чтобы она работала).

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

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Вы также можете использовать помощник по формам, как показано ниже, где вы можете определить контроллер и имя действия:

<?php echo $this->Form->create('Fournisseur', array('url' => array('controller' => 'Fournisseurs', 'action' => 'addFournisseur'))); ?>
// Form elements
<?php echo $this->Form->end(); ?>
0 голосов
/ 07 февраля 2019

Я полагался только на Xdebug, несмотря на то, что точка останова не останавливалась в функции, поэтому я подумал, что она не вызывается (функция и код внутри нее), но с помощью функции debug($data) точка остановасработал, и я смог продолжить отладку в функции.

Я не знаю, почему Xdebug действовал таким образом, но я не буду полагаться только на это сейчас.

спасибо всем, кто помог, яможет продолжать идти сейчас!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...