0

私はこれを数日間理解しようとしています。誰かが私が見て、私が間違っていることを教えてくれることをもっと経験できますか?

これは、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にご協力いただきありがとうございます。

4

2 に答える 2

0

これを私のテンプレートの上部に追加しました:

    <?php use_helper('Javascript') ?>

これをアプリに追加しました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にご協力いただきありがとうございます。

于 2012-06-06T05:30:01.143 に答える
0

最初のステップでは、すべてをクリーンアップしてから、publishを再実行します

./symfony cc
./symfony plugin:publish-assets

次に、Webフォルダーを確認します。sfProtoculousPlugin中に、フォルダーがあるフォルダーはcssありjsますか?

Firebugの[ネットワーク]タブを確認すると、404のフラグが付いたjsはありますか?

prototype.js十分にロードされていますか?

于 2012-06-05T07:23:53.860 に答える