2010-07-12 4 views
0

Я хочу вернуть строку HTML, как следует из моего контроллера.PHP String возвращается с HTML

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

Но, получая error.I пробовала разные комбинации одинарных и двойные кавычки .Please помогает мне называть demosuccess функции, используя выше HTML строки .... Спасибо

+1

Какая ошибка вы получаете? –

+1

* (tipp) * [sprintf возвращает форматированную строку] (http://uk2.php.net/manual/en/function.sprintf.php) – Gordon

+0

Почему вы разделяете значение Base-64 на куски? – Gumbo

ответ

3
$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>"; 
+0

отличная работа. Большое вам спасибо. Работает – abhis

1
$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

Благодарим вас за ваш ответ – abhis

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

Благодарим вас за ответ – abhis

1

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

$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>'; 
+0

Спасибо .. это не работает, который передает аргумент примерно следующим образом: javascript: demosuccess (MQ ==, YWpqZGtkQHJpbi5jb20 =, 1). Нам нужно поставить все с кавычками вроде javascript: «demosuccess ('MQ ==', 'YWpqZGtkQHJpbi5jb20 =', '1')". – abhis

+0

изменено, избегайте кавычек вроде этого \ ' – Moak

+0

Нет необходимости использовать метку 'javascript', если вы не хотите использовать ее с' break' или 'continue'. Значение 'onclick' уже интерпретируется как код сценария. – Gumbo

0

Проблема в том, что вы не можете использовать вызов метода, например, ваш $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')); 
Смежные вопросы