PHP String возвращается с HTML - PullRequest
0 голосов
/ 12 июля 2010

Я хочу вернуть HTML-строку следующим образом из моего контроллера.

$returnValue = "<a onclick='demosuccess(".
    chunk_split( base64_encode( $details['clientid'] ) ).
    ",".chunk_split( base64_encode( $details['email'] ) ).
    ",1)' >$this->lang->line('link_sendactivation')</a>";

Но получаю ошибку. Я пробовал разные комбинации одинарных и двойных кавычек. Пожалуйста, помогите мне вызвать функцию demosuccess с помощьювыше строка HTML .... Спасибо

Ответы [ 5 ]

3 голосов
/ 12 июля 2010
$client_id = chunk_split(base64_encode($details['clientid']));
$email = chunk_split(base64_encode($details['email']));    
$lang_line = $this->lang->line('link_sendactivation');
$returnValue = "<a onclick='demosuccess($client_id, \"$email\", 1)'>$lang_line</a>";
1 голос
/ 12 июля 2010
$returnValue = "<a onclick='demosuccess(".chunk_split(base64_encode($details['clientid'])).",".chunk_split(base64_encode($details['email'])).",1)' >".$this->lang->line('link_sendactivation')."</a>";
1 голос
/ 12 июля 2010

Попробуйте немного разбить вещи,

$id = chunk_split(base64_encode($details['clientid']));
$email = chunk_split(base64_encode($details['email']));
$thirdthing = $this->lang->line('link_sendactivation');
$returnValue = '<a onclick="demosuccess(\''.$id.'\',\''.$email.'\',\'1\')" >'.$thirdthing.'</a>';
1 голос
/ 12 июля 2010
$returnValue = "<a onclick=\"javascript:demosuccess(".chunk_split(base64_encode($details['clientid'])).",".chunk_split(base64_encode($details['email'])).",1);\">".$this->lang->line('link_sendactivation')."</a>";
0 голосов
/ 13 июля 2010

Проблема здесь в том, что вы не можете использовать вызов метода, подобный вашему $this->lang->line('link_sendactivation'), внутри строкового объявления.

Вам либо нужно заранее получить возвращаемое значение этого метода и сохранить его во временной переменной:

$tmp = $this->lang->line('link_sendactivation');
$returnValue = "<a onclick='demosuccess(".chunk_split(base64_encode($details['clientid'])).",".chunk_split(base64_encode($details['email'])).",1)' >$tmp</a>";

Или вы объединяете это возвращаемое значение с другими частями (как вы это делали с chunk_split):

$returnValue = "<a onclick='demosuccess(".chunk_split(base64_encode($details['clientid'])).",".chunk_split(base64_encode($details['email'])).",1)' >".$this->lang->line('link_sendactivation')."</a>";

Или вы используете sprintf, как предложил Гордон:

$returnValue = sprintf("<a onclick='demosuccess(%s,%s,1)' >%s</a>",
    chunk_split(base64_encode($details['clientid'])),
    chunk_split(base64_encode($details['email'])),
    $this->lang->line('link_sendactivation'));

Кроме того, вы, вероятно, забыли процитировать фрагментированные значения Base-64 в JavaScript. Вы можете использовать json_encode для этого:

$returnValue = sprintf("<a onclick='demosuccess(%s,%s,1)' >%s</a>",
    json_encode(chunk_split(base64_encode($details['clientid']))),
    json_encode(chunk_split(base64_encode($details['email']))),
    $this->lang->line('link_sendactivation'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...