0

私はjavascriptでsmartyを使おうとしています。

これが.phpと.tplの私の完全なコードです:

.Php

<?php

$_CRUMBS->Add("User false logs", "/users/user false logs/");


$ufl = $_DB->queryRaw("SELECT `user_id` ,`firstname`,`lastname` FROM `employees`");

while ($row = $ufl->next_assoc()) {
$results[] = $row;
}

$smarty->assign("ufl",$results);
$smarty->TDisplay("users/backend_users.tpl", "MDPI Backend | Backend Users", "general-content.tpl");

?>

.tpl

<h1>Create Backend Users</h1>



<script>
$(function() {
    var availableTags = [
        {foreach from=$ufl item=uflItem}
            <tr>
                <td>{$uflItem['firstname']}</td>
            </tr>
    {/foreach}
    ];
    $( "#tags" ).autocomplete({
        source: availableTags
    });
});
</script>


<div class="demo">
<div class="ui-widget">
<label for="tags">Tags: </label>
<input id="tags">
</div>

</div><!-- End demo -->

しかし、そこにはエラーがあります。私はウィットリテラルを試しましたが、何も変わりませんでした。ありがとうございました。

4

4 に答える 4

2

次のように、json_encode を使用することをお勧めします。

$names = array();
foreach($result in $results)
    $names = $result['firstname']
$smarty->assign("names",json_encode($names));

そして後でjsで:

<script>
$(function(){
    var availableTags = {/literal}{$names}{literal}; //array is pulled out from smarty
    $("#tags" ).autocomplete({
        source: availableTags
    });
});

</script>
于 2012-06-18T21:00:58.243 に答える
0

あなたのコードは問題ないように見えますが、実行せずに見られる唯一の問題はjavascriptにあります。次のようなことを試してください:

<script>
$(function() {
    var availableTags = [
        {foreach from=$ufl key=index item=uflItem}
            '<tr>\
                <td>{$uflItem['firstname']}</td>\
            </tr>'{if isset($ufl[$index+1])},{/if}
    {/foreach}
    ];
    $( "#tags" ).autocomplete({
        source: availableTags
    });
});
</script>

ちなみに、Smarty 3 では{literal}タグは必要ありません。

于 2012-06-11T08:33:44.007 に答える