私はこれを数日間理解しようとしています。誰かが私が見て、私が間違っていることを教えてくれることをもっと経験できますか?
これは、input_auto_complete_tagのsfProtoculousPluginの助けを借りて、symfony1.4に組み込まれています。
私のテンプレート:
<?php echo input_auto_complete_tag(
'tag', /*id_of_field*/
'', /*default_value_of_field*/
'tag/autocomplete', /*url_to_ajax_script*/
array('autocomplete' => 'off'), /*array_with_extra_tag_attributes*/
array('use_style' => 'true') /*array_with_options*/
) ?>
<input type="submit" name="submit" value="Tag me!" />
...
</form>
私のrouting.ymlの上部に追加されました:
tag_autocomplete:
url: /tag_autocomplete
param: { module: tag, action: autocomplete }
作成されたtemplates/autocompleteSuccess.php:
<ul>
<?php foreach ($tags as $tag): ?>
<li><?php echo $tag ?></li>
<?php endforeach; ?>
</ul>
モジュール/タグ/アクション/action.class.phpファイルに次のアクションを追加しました。
public function executeAutocomplete(sfWebRequest $request)
{
$this->tags = QuestionTag::getTagsForUserLike(
$this->getUser()->getGuardUser()->getId(),
$this->getRequestParameter('tag'),
10
);
}
次のメソッドをQuestionTag.class.phpファイルに追加しました。
public static function getTagsForUserLike($user_id, $tag, $max = 10)
{
$tags = Doctrine_Query::create()
->select('qt.tag')
->from('QuestionTag qt')
->where('qt.user_id = ?', $user_id)
->andWhere("qt.tag LIKE '%".$tag."%'")
->orderBy('qt.tag')
->limit($max)
->fetchArray();
return $tags;
}
生成されたjsコードは次のとおりです。
//<![CDATA[
new Ajax.Autocompleter('tag', 'tag_auto_complete', '/frontend_dev.php/tag_autocomplete', {});
//]]>
Firebugコンソールで、次のエラーが発生します。
Ajax is not defined
[Break On This Error]
...ax.Autocompleter('tag', 'tag_auto_complete', '/frontend_dev.php/tag_autocomplete...
次のコマンドを試しました。おそらく「アセット」(jsスクリプト)を/webフォルダーにコピーします。一部の人には効果があったようですが、私には効果がありません。
./symfony plugin:publish-assets sfProtoculousPlugin
もうすぐそこにいるような気がします。どんな助けでも大歓迎です。よろしくお願いします。
アップデート1
私の/web/sfProtoculousPlugin
フォルダには次のものがあります。
css /
input_auto_complete_tag.css
js/
builder.js
controls.js
dragdrop.js
effects.js
index.html
prototype.js
scriptaculous.js
slider.js
sound.js
unittest.js
<script>
また、中にタグがありませんprototype.js
。
解決済み
これをアプリに追加しましたsettings.yml
:
all:
.settings:
prototype_web_dir: /sfProtoculousPlugin
そしてこれをアプリにview.yml
:
javascripts: [%SF_PROTOTYPE_WEB_DIR%/js/prototype, %SF_PROTOTYPE_WEB_DIR%/js/scriptaculous]
次に、実行./symfony cc
してページを更新しました。これで、意図したとおりに完全に機能します。j0kにご協力いただきありがとうございます。