3

私はZendFrameworkを数か月使用しています。私はこれまで、いくつかのビューヘルパー、アクションヘルパー、およびパーシャルをうまく使用してきました。今、TinyMCEなどのプロジェクトで使用したいJavaScriptライブラリに出くわしました。

私の質問は、これらをZendプロジェクトに実装するための最良の方法は何ですか?できれば、これらのjavascriptライブラリをビューレベルで追加または有効にできるようにしたいと思います。たとえば、zend_formが含まれているaddSomething.phtmlにアクセスすると、テキスト領域の1つがTinyMCEエディタフィールドになります。ただし、すべてのフォームまたはすべてのテキスト領域要素でこれを使用する必要はありません。

では、ZF 1.11.11でこれらのライブラリを実装し、アプローチするための最良の方法は何でしょうか。

アドバイスを事前に感謝します:)

4

4 に答える 4

4

ビューヘルパーを使用して、コントローラー/ビューごとにjavascriptおよびcssファイルをロードできます。これは私が実験したものであり、非常に役立つと思います。まだライブプロジェクトに組み込むステップを踏んでいませんが、まだ評価中です。

これが私がアイデアを得たdevzoneの記事です。テクニックを投稿してくれたAndyBairdの功績です。

基本的に、2つのビューヘルパーを設定します。1つはjavascript用です。-

class Zend_View_Helper_JavascriptHelper extends Zend_View_Helper_Abstract
{   
    function javascriptHelper() {
        $request = Zend_Controller_Front::getInstance()->getRequest();
        $file_uri = 'media/js/' . $request->getControllerName() . '/' . $request->getActionName() . '.js';

        if (file_exists($file_uri)) {
            $this->view->headScript()->appendFile('/' . $file_uri);
        }
    }
}

1つはcss用です:-

class Zend_View_Helper_CssHelper extends Zend_View_Helper_Abstract 
{ 
    function cssHelper() { 
        $request = Zend_Controller_Front::getInstance()->getRequest(); 
        $file_uri = 'media/css/' . $request->getControllerName() . '/' . $request->getActionName() . '.css'; 

        if (file_exists($file_uri)) { 
            $this->view->headLink()->appendStylesheet('/' . $file_uri); 
        } 

        return $this->view->headLink(); 

    } 
}

次に、レイアウトスクリプトからそれらを呼び出します。-

<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
    <title>My app title</title> 
    <? $this->headLink()->appendStylesheet('/media/css/global.css') ?> 
    <? $this->headLink()->appendStylesheet('/media/css/iefix.css','screen','lt IE 7') ?>     
    <?= $this->cssHelper() ?>    
    <? $this->headScript()->appendFile('/media/js/jquery-1.3.2.min.js') ?> 
    <? $this->headScript()->appendFile('/media/js/global.js') ?> 

    <? $this->javascriptHelper() ?> 
    <?= $this->headScript() ?> 
</head>

次に、javascriptファイルとcssファイルを、それらが使用されるアクションの名前を反映するフォルダーに保存します。次に例を示します。

media / js / index / index.js
media / css / index / index.css

インデックスアクションのcssとjavascriptをロードします。

js実際には、javascriptとcssを同じフォルダーに配置することが望ましいことがわかったため、上記のパスの&css部分を見逃し、それに$file_url応じて両方のヘルパーの変数を調整します。

于 2012-06-20T15:17:13.197 に答える
2

ビューレベルでJSファイルを追加するには、通常、inlineScript()ビューヘルパーを使用します。

したがって、特定のビューのフォームの特定のフィールドにTinyMCEを追加するには、次のように記述します。

$this->inlineScript()->appendFile(
    $this->baseUrl('js/yourTinyMCEScript.js'),
    'text/javascript', array('charset' => 'UTF-8')
);

次に、ビューの最後(またはレイアウト内)で、

echo $this->inlineScript();

このように、TinyMCEは、特定のフォームの特定のフィールドに対してのみアクティブ化できます。

お役に立てば幸いです。

于 2012-06-20T12:30:36.740 に答える
0

私はckeditorが好きです

これは私の解決策です:

ckeditorライブラリをダウンロードし、ファイルを/ public / scripts /ckeditor/にコピーします

application.ini

; load jquery from google cdn with jquery ui
resources.jquery.version    = 1.7
resources.jquery.ui_enable  = true
resources.jquery.ui_version = 1.8
resources.jquery.stylesheets[] = "http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/ui-lightness/jquery-ui.css"

form.php

/** @var $jq ZendX_JQuery_View_Helper_JQuery_Container */
$jq = $this->getView()->jQuery();

// Add Library CKEditor
$jq->addJavascriptFile('/scripts/ckeditor/ckeditor.js');
$jq->addJavascriptFile('/scripts/ckeditor/adapters/jquery.js');
$jq->addOnload("$('#text').ckeditor();");

//textarea
$this->addElement('textarea', 'text', array('label' => 'Testo', 'required' => true));

ファイル/public/scripts/ckeditor/config.jsで、WYSIWYGでお気に入りのツールを設定できます。

Tinymceを使用する必要がある場合は、こちらをお読みください

于 2012-06-20T10:15:17.693 に答える
0

最善のアプローチは、zend_form_textareaを拡張してから、decaoratorとviewhelperを作成することだと思います。

デコレータとviewhelperのみを作成することもできますが、フォーム要素を作成するたびにデコレータを挿入することを避けるため、最初のオプションの方がクリーンです。

于 2012-06-20T17:58:33.233 に答える