#php #function #codeigniter #controller
#php #функция #codeigniter #контроллер
Вопрос:
В моей функции контроллера я пытаюсь выполнить два действия redirect()
или $this->method
, но это работает только для первого. Когда код получает метод redirect или $this, он перенаправляет на эту функцию или страницу. Но мне нужно выполнить два действия параллельно, например —
Я использую Codeigniter 3.1.10
if($result == TRUE) {
$data = array(
details;
);
$this->send_mail($data); //This goes to send_mail functin
$this->session->set_flashdata('success', 'Account created successfully.' );
redirect('Dashboard');
}
Я хочу что-то вроде этого. Да, конечно, у меня есть альтернатива, например, продолжить работу над моей send_mail()
функцией, но каждый раз у меня возникают сообщения другого типа и тело, поэтому я хочу какой-нибудь удобный способ выполнить две работы за один раз. Если кто-нибудь подал такую идею, как мне это сделать. Это действительно очень здорово и очень просто для меня, в другой раз я создам более 4 функций для всех других задач.
Комментарии:
1. В приведенном выше примере вы только что написали 1 перенаправление.
2. Помогите мне понять это: есть ли перенаправление в
send_mail()
функции? И затем вы хотите перенаправить на панель мониторинга впоследствии? Если вы сделаетеsend_mail()
функцию закрытой, вы могли бы заставить ее возвращатьboolean
и перенаправлять на основе этого, или вы могли бы установить ее какvoid
и просто вызвать ее «и забыть»3. где
send_mail()
живет? это метод внутри одного контроллера? это внутри помощника? это на другом контроллере? Вызов другого метода (с$this->method_name()
) на самом деле не является перенаправлением. Что я бы предложил, так это изменить вызов send_mail на$somevariable = $this->send_mail($data)
. Делая это, вы явно заставляете этот метод запускаться и назначаете его вывод$somevariable
вместо того, чтобы фактически позволятьsend_mail
управлять потоком (это тоже хорошая практика, вам может потребоваться предпринять разные действия в зависимости от того, чтоsend_mail()
возвращает4. Да, на самом деле $this-> send_mail() — это его метод в том же контроллере, когда эта строка встретит его, я перейду к методу send_mail(), а остальная часть строки выполняться не будет. В этом проблема. Но давайте попробуем ваше предложение $ some = $ this-> send_mail().
5. Используя $some = $this->send_mail($data); перенаправление(‘Панель инструментов’); В контроллере при получении строки $some он переходит к методу send_mail(), не вызывая оставшуюся строку кода.