Как написать ссылку прямо внутри контроллера? - PullRequest
0 голосов
/ 11 июня 2019

На самом деле я хочу создать письмо, содержащее ссылку внутри него для отправки людям.Но у меня возникли проблемы при написании ссылки, поскольку CodeIgniter не может рассматриваться как чистый PHP-скрипт, который позволяет нам записывать его напрямую в любую переменную, которую мы хотим.

Я пытался написать некоторые изHTML-код непосредственно к почте string variable, которая содержит почтовое сообщение, но оно не работает.
А также я попытался попробовать часть кода CI внутри string variable, но код просто обрабатывается какпростой текст.

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

Я также прочитал CodeIgniter * документация и поймать одно из их утверждений, которое говорит,

Тип почты.Если вы отправляете электронное письмо в формате HTML, вы должны отправить его как полную веб-страницу.Убедитесь, что у вас нет относительных ссылок или относительных путей к изображениям, иначе они не будут работать.

Фрагмент моих кодов выглядит так:


public function forgotpassword() {

$receiver = $this->input->post(user');

$this->load->library('email');
$this->email->from('sender@gmail.com', 'Sender');
$this->email->to($receiver);
$this->email->subject('Reset Password');

// Just a testing sample
$link="anchor('controller/function/parameter', 'Link Text')";
$msg="Halo, User!\n
Blablabla.\n
Click the link below to proceed.\n
$link\n\n
Best regards.";
$this->email->message($msg);

if($this->email->send())
{
$data['status'] = true;
$data['pesan'] = "Success to send email";
} else {
$data['status'] = false;
$data['pesan'] = "Failed to send email";
}

echo json_encode($data);
}

Я ожидаюфрагмент кода выше станет примерно таким:

Halo, пользователь!
Blablabla.
Нажмите на ссылку ниже, чтобы продолжить.
somelink
С наилучшими пожеланиями.

Ответы [ 4 ]

0 голосов
/ 12 июня 2019

Я думаю, что это может решить вашу проблему.

    $link=anchor('controller/function/parameter', 'Link Text');
    $msg="Halo, User!<br>
    Blablabla.<br>
    Click the link below to proceed.<br>
    $link<br>
    Best regards.";
    echo $msg;

опробуйте это и дайте мне знать результат.

0 голосов
/ 11 июня 2019

Вам нужно объединить строки:

$msg="Halo, User!\n
Blablabla.\n
Click the link below to proceed.\n
" . $link . "\n\n
Best regards.";

Edit: Ответьте на свой комментарий вопрос о html-письмах. Это способ, которым я делаю это с HTML-письмами: У меня есть помощник по электронной почте в помощниках / MY_email_helper.php

<?php
function loadEmailConfig() {
    $instance = get_instance ();
    $instance->load->language ( 'functions/email' );
    $config = array ();
    $config ['protocol'] = 'smtp';
    $config ['smtp_host'] = 'smtp.xxx.xx';
    $config ['smtp_user'] = 'xxx@xxx.xx';
    $config ['smtp_pass'] = 'xxx';
    $config ['smtp_port'] = 25;
    $config ['mailtype'] = 'html';
    return $config;
}
function my_sendHtmlEmail($receiver, $subject, $html) {
    // --- Send Message ---
    $instance = get_instance ();
    $instance->load->library ( 'email' );
    $instance->email->clear ( TRUE );
    $instance->lang->load ( 'functions/email' );
    $config = loadEmailConfig ();
    $instance->email->initialize ( $config );
    $instance->email->from ( 'your@send-mail.com', 'organisationname' );
    $instance->email->to ( $receiver );
    $instance->email->subject ( $subject );
    $email_data ['message'] = $html;
    $message = $instance->load->view ( 'email/email', $email_data, TRUE );
    $instance->email->message ( $message );
    $bool = $instance->email->send ();
    return $bool;
}

Аргумент $ html - это изменяющееся содержимое письма, которое я вкладываю в мой шаблон письма html, который сохраняется в views / email / email.php

тогда мне просто нужно загрузить помощника

    $this->load->helper('email');

и использовать функцию в контроллере

my_sendHtmlEmail('receiver@email.com','subject','<p>html email with <a href""> link</a></p>');
0 голосов
/ 11 июня 2019

Вы близки, просто измените $link на:

$link=anchor('controller/function/parameter', 'Link Text');

Якорь создает абсолютную ссылку, в вашем случае что-то вроде:

http://your_domain/controller/function/parameter.html "> Текст ссылки

. Возможно, вы захотите изменить \n на <br/>, что означает разрыв строки html

$msg="Halo, User!<br/><br />
      Blablabla.<br />
      Click the link below to proceed.<br />
      $link<br /><br />
      Best regards.";

это приведет к выводу:

Halo, пользователь!

Blablabla.

Нажмите на ссылку ниже, чтобы продолжить.

Текст ссылки

С наилучшими пожеланиями.

также убедитесь, что помощник URL загружен либо в автозагрузку, либо в контроллер, прежде чем использовать anchor (), например: $this->load->helper('url');

больше информации о anchor() из документов здесь

edit: Чтобы отобразить ссылку как обычный текст, вы можете использовать функцию PHP htmlentities(), который преобразует все применимые символы в сущности HTML, например:

$link=htmlentities(anchor('controller/function/parameter', 'Link Text'));
$msg="Halo, User!\n\n
      Blablabla.\n
      Click the link below to proceed.\n
      $link\n\n
      Best regards.";

, теперь вывод выглядит примерно так:

Halo, пользователь!

Blablabla,Нажмите на ссылку ниже, чтобы продолжить.

Link Текст

С уважением.

Подробнее о PHP htmlentities ()

0 голосов
/ 11 июня 2019

Просто используйте это

<?php echo anchor('controller/function/parameter', 'Link Text'); ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...