codeigniter и ООП общий вопрос о вызывающих функциях и родительском конструкторе - PullRequest
1 голос
/ 13 июня 2010

Хорошо, у меня есть некоторые пробелы в моем понимании PHP ООП, классов и функций, в частности, всего этого класса конструктора. Я использую и Zend, и CI, но сейчас я пытаюсь выяснить это в CI, так как это менее сложно.

Итак, все, что я пытаюсь сделать, это понять, как вызвать функцию со страницы просмотра в коде воспламенителя. Я понимаю, что это может пойти против MVC, но я работаю с API и результатами поиска не из моей базы данных, поэтому в основном я хочу определить функцию в своем классе, которую я могу вызывать на одной из моих страниц просмотра ... и я продолжаю получение ошибки «Неустранимая ошибка: вызов неопределенного имени функции» независимо от того, что я пытаюсь.

Я думал, что просто должен объявить

public function testing() {
    echo "testing testing 123;
}

но вызывая это с точки зрения, я получаю эту ошибку. Тогда я прочитал кое-что о том, чтобы идти Родитель :: Controller ();

в индексе класса, где также находится функция тестирования? Но это тоже не сработало. В любом случае, да, кто-то может объяснить, что мне нужно сделать, чтобы вызвать функцию «testing ()» на одной из моих страниц просмотра? и прояснение класса конструктора и того, что именно делает parent :: Controller (), также будет высоко ценится.

Ответы [ 3 ]

2 голосов
/ 13 июня 2010

Как вы сказали, это идет вразрез с концепцией MVC, поэтому лучше было бы использовать вспомогательную функцию вместо объявления ее в качестве метода контроллера. Или, что еще лучше, позвольте вашему контроллеру разобраться со всеми вещами API поиска: , а затем передайте результаты поиска с вашего контроллера на ваше усмотрение.

1 голос
/ 13 июня 2010

Я согласен с обоими этими пунктами, но есть случаи, когда вы не получаете необходимые данные до тех пор, пока представление не будет загружено (например, как некоторые данные php внутри встроенного JavaScript или что-то в этом роде).

Еслив этом случае я бы использовал ajax-вызов (в представлении) для вызова функции в контроллере (поскольку вам просто нужен URL-адрес для их вызова) и отправки данных поста, если функции нужно что-то передать.Имеет ли это смысл?

0 голосов
/ 10 мая 2016

Да, как вы сказали, это идет вразрез с концепцией MVC, но нет ничего невозможного.Мы можем сделать это просто и следовать концепции CI.Вам просто нужно передать объект Controller в представление:

class Test extends CI_Controller {

    public function __construct() {
        parent::__construct();
    }

    public function sayhi() {
        echo "Hi from controller...";
    }

    public function index() {
        $this->load->view('test', array('controller' => $this));
    }
}

Затем вы можете вызвать функцию, определенную в контроллере, например, я позвонил sayhi() со страницы моего просмотра:

<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <h2>
            <?= $controller->sayhi() ?>
        </h2>
    </body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...