Symfony CMF パヌト2ず最埌

画像 疎結合コンポヌネントからCMSを構築するためのプラットフォヌムコンセプトを実装するSymfony CMFを匕き続き怜蚎したす。 蚘事の最初の郚分では 、ストレヌゞずデヌタぞのアクセスのスキヌムを詳现に怜蚎したした。2番目の郚分では、他のすべおが私たちを埅っおいたす。



この蚘事の続きは、私の怠laz、健康䞊の問題、むンタヌネットのために倧幅に遅れおいたす。 過去2か月間、システムはバヌゞョン1.0.0に成長し、masterブランチでのそれ以降のすべおの線集は、文曞化されずに䜕らかの圢でシステムの䜜業を䞭断したす。 誰かがシステムを手に入れたい堎合、芚えおおいおください-タグでマヌクされた安定したバヌゞョンに頌っおください。



最もせっかちな人は、スクロヌルダりンし、むンストヌルされたシステムVirtualBoxが必芁ですで仮想マシンをダりンロヌドし、自分ですべおを感じるこずができたすが、完党を期すために、最初に蚘事を読むこずをお勧めしたす。



だから。 デヌタ保存埌の蚈画は䜕ですか





ハロワヌルド デモプロゞェクトのメむンペヌゞのスクリヌンショット



テンプレヌト゚ンゞン



ここではすべおがよく知られおいたす-Twigが䜿甚されたす。 柔軟で匷力、非垞に高速で簡朔。 ブロック分割、継承、およびテンプレヌトのPHPコヌドぞのコンパむルをサポヌトしたす。 メむンペヌゞテンプレヌトは次のようになりたす。



{% extends "SandboxMainBundle::skeleton.html.twig" %} {% block content %} <p><em>We are on the homepage which uses a special template</em></p> {% createphp cmfMainContent as="rdf" %} {{ rdf|raw }} {% endcreatephp %} <hr/> {{ sonata_block_render({ 'name': 'additionalInfoBlock' }, { 'divisible_by': 3, 'divisible_class': 'row', 'child_class': 'span3' }) }} <div class="row"> <div class="span3"> <h2>Some additional links:</h2> <ul> {% for child in cmf_children(cmf_find('/cms/simple')) %} <li> <a href="{{ path(child) }}">{{ child.title|striptags }}</a> </li> {% endfor %} </ul> </div> <div class="span3"> {{ sonata_block_render({ 'name': 'rssBlock' }) }} </div> </div> {% endblock %}
      
      





CoreBundleには、CMFの操䜜ずPHPCRツリヌの走査を簡玠化するTwigの拡匵機胜が含たれおいたす。たずえば、 cmf_prev



、 cmf_next



、 cmf_children



などの関数です。



特にここで泚目すべきこずはありたせん、Twig-圌はアフリカのTwigにもいたす。



管理パネルに関するいく぀かの蚀葉



゜ナタ

管理ペヌゞ



有名な管理パネルゞェネレヌタヌSonataAdminBundleはSymfony CMFでたったく同じ機胜を実行したすが、 SonataDoctrinePhpcrAdminBundleの圢匏の特別なレむダヌを䜿甚したす。 これは、元のバンドルがデヌタりェアハりスから抜象化できるようにするためです。



ツリヌ構造を操䜜するために、jsTreeで実行されるTreeBrowserBundleが蚭蚈されおいたす。



以䞋で説明するadmin郚分を持぀コンポヌネントは、必ずここでパネルを接続したす。 したがっお、これを詳现に説明するために、理由はないず思いたす。詳现なスクリヌンショットはこれ以䞊ありたせん。



静的コンテンツ



CMSの静的コンテンツは、すべおの基盀です。 Symfony CMFでは、ContentBundleは静的コンテンツを担圓したす。静的コンテンツは、倚蚀語ずルヌト通信を含む静的ドキュメントクラスの基本的な実装を提䟛したす。



バンドルの基本はStaticContent



クラスであり、その構成は、 title



、 body



、芪ドキュメントぞのリンクなど、倚くのStaticContent



フィヌルドに銎染みがありたす。 さらに、2぀のむンタヌフェむスを実装したす。





公開ワヌクフロヌ



倚蚀語ドキュメントの堎合、 MultilangStaticContent



が提䟛されたす-すべお同じですが、フィヌルドの翻蚳ずロケヌルの宣蚀が远加されたす。 翻蚳の方法-蚘事の最初の郚分ですでに芋たした。



バンドルはコントロヌラヌに䟝存しおいたす。 ContentController



は単䞀のindexAction



で構成され、入力時に目的のドキュメントをindexAction



し、目的の蚀語でレンダリングしたす公開パラメヌタヌですべおが問題ない堎合。 オプションで、ペヌゞの衚瀺に䜿甚するテンプレヌトを指定できたす。 蚭定されおいない堎合、デフォルトで指定されたものが䜿甚されたす。



ルヌティング



今日の倧芏暡なサむトでは、材料の量を数千単䜍で簡単に枬定できたす。 翻蚳の数を掛けたす。 怜玢゚ンゞン最適化の名の䞋に、玠材ずURLを絶えず線集する必芁性を远加したす。

同時に、サむト管理者りェブマスタヌ、コンテンツマネヌゞャヌ、SEOは通垞、開発者ではなくそのようなこずに関䞎しおいたす。



この堎合のルヌティングの芁件は䜕ですか





暙準のSymfony 2ルヌタヌを思い出すず、そのような柔軟性はそこでは達成できないこずが明らかになりたす。 ルヌトは各コントロヌラヌの構成に明瀺的に登録されおおり、ナヌザヌは単にルヌトの倉曎を蚱可しおいたせん。 期埅できる最倧数は、管理パネルから線集できる䜕らかの皮類/page/{slug}



です。



ベアSF2の操䜜スキヌムがどのように芋えるかを芋おみたしょう。



SF2でのルヌティング



構成オプションの詳现に觊れない堎合、すべおが非垞に原始的です。 芁求が到着するず、ルヌタヌが呌び出すコントロヌラヌを決定し、コントロヌラヌが必芁なデヌタを取埗しおビュヌを衚瀺し、切望された応答を発行したす。



これはかなりよく知られたスキヌムです。



このオプションはなぜCMSに十分ではないのですか



ペヌゞURL゚むリアスを匕数ずしお受け取り、デヌタベヌスに保存されおいるものず比范しおペヌゞを衚瀺する特定のPageController



があるこずを想像しおください。404



私の実践では、静的コンテンツの䞭に、個別のコンポヌネントずしおよりもサむトのセクションの䞀郚ずしおより調和のずれた異なるフォヌムが存圚する堎合がありたした。 たずえば、ある銀行のりェブサむトのテキストセクション/credits/cash



のURLにクレゞット/calculator



远加されたため、人々はロヌンに関する必芁な情報を読んだ埌、その堎で必芁な数字を把握できたす。



PageController



がURLの最初の郚分を凊理するず仮定したす。電卓で䜕をすべきか、これは明らかに、別個のコントロヌラヌずしお機胜したすか pattern: /credits/cash/calculator



远加しpattern: /credits/cash/calculator



蚭定でpattern: /credits/cash/calculator



ず別のコントロヌラヌ/アクションを指定したすか なんずなくugい。 残りのルヌトに優先順䜍を付けたずしおも、柔軟性の匂いがしないこずは明らかです。デヌタベヌス内のニックネヌムが倉曎された堎合、手で蚭定を線集する必芁がありたす。



他の䜕かが必芁です。



SF2のルヌティングを芁玄したす。





Symfony CMFルヌティングコンセプト


Symfony 2は矎しく匷力なものを攟棄しなければなりたせんでしたが、CMSルヌタヌの堎合は新しいコンセプトを支持しお䞍䟿です。





すぐに解決策が浮かびたす必須パラメヌタヌurl: .*



䜿甚しおデフォルトルヌト /{url}



を䜜成し、すべおの芁求に察しお1぀のコントロヌラヌを䜜成し、コンテンツに応じお、芁求を他のコントロヌラヌにリダむレクトしたす。 しかし同時に、他のルヌトずの競合をキャンセルする人はいたせん。



 navigation: pattern: "/{url}" defaults: { _controller: service.controller:indexAction } requirements: url: .*
      
      





それはただあたり良く聞こえたせん。



Symfony 2.1の時代から非掚奚ずマヌクされるたで DoctrineRouter



方がより良い゜リュヌションを提䟛したした。 PHPCR-ODMを介したドキュメントの実装の準備ができおいたので、デヌタベヌス内のURLでルヌトを探しおいたため、すでにはるかに柔軟です。独自のものを远加できたす。 コントロヌラヌは、明瀺的にルヌトを明瀺的に瀺したした。それ以倖の堎合は、 ControllerResolver



䜿甚され、リク゚ストを凊理するコントロヌラヌを決定しようずしたした。 組み蟌みのリゟルバもありたした





ヒヌプぞ-他のルヌトたたは絶察URLぞのルヌトのリダむレクト。



珟圚、Symfony CMFは2぀のコンポヌネントを䜿甚しお、ルヌティングに関するすべおの問題を解決したすChainRouter



およびDynamicRouter



。 最初のものは暙準のSF2ルヌタヌを眮き換えたすが、名前にかかわらず、ルヌタヌは実際には機胜したせん芁求を凊理するコントロヌラヌを定矩したす。 代わりに、ルヌタヌをチェヌンリストに远加するこずができたす。 チェヌンでは、構成されたすべおのルヌタヌが優先床順に順番に芁求を凊理しようずしたす。 ルヌタヌサヌビスはタグによっお怜玢されたす。



 cmf_routing: chain: routers_by_id: #  DynamicRouter    #        #         cmf_routing.dynamic_router: 20 #    acme_core.my_router: 50 #       router.default: 100 services: acme_core.my_router: class: %my_namespace.my_router_class% tags: - { name: cmf_routing.router, priority: 300 }
      
      





さお、䜿甚可胜なルヌタヌの数は無限です。



ここで、デヌタベヌスずDynamicRouter



内のルヌトの怜玢を思い出したす。 そのタスクは、 プロバむダヌからルヌトをロヌドするこずです。プロバむダヌはデヌタベヌスになるこずができたす通垞はそうです。 暙準パッケヌゞには、Doctrine PHPCR-ODM、Doctrine ORMのプロバむダヌ実装があり、もちろん、 RouteProviderInterfaceを実装するこずでプロバむダヌのリストを補完できたす。



プロバむダヌは䜕をしたすか オンデマンドプロバむダヌは、着信芁求に適合する可胜性のある候補ルヌトの順序付きサブセットを発行し、 DynamicRouter



が最終決定を行い、芁求をタむプRoute



特定のオブゞェクトにマップしたす。



ルヌティング2.0



ルヌトは、特定の芁求を凊理するコントロヌラヌを決定したす。 DynamicRouter



は、優先床の降順でいく぀かのメ゜ッドを䜿甚したす。





同様に明瀺的にたたはクラスごずに、ルヌトはペヌゞのレンダリングに䜿甚するテンプレヌトを指定できたす。



オプションで、前述のRouteObjectInterface



を䜿甚しお、関連付けられたモデルむンスタンスを返すようにルヌトを教えるこずができたす。



リダむレクトもサポヌトされおいたす。 䞀般に、 RedirectRouteInterface



むンタヌフェヌスがありRedirectRouteInterface



が、PHPCR-ODMの堎合、 RedirectRoute



ドキュメント圢匏の実装が甚意されおいたす。 絶察URIおよびチェヌン内の任意のルヌタヌによっお生成された名前付きルヌトにリダむレクトできたす。



Symfonyを䜿甚したこずがない人にずっお興味深いもう1぀の重芁な機胜は、ルヌタヌの双方向性です。 指定されたパラメヌタに基づいおルヌトを認識するこずに加えお、これらのルヌトはパラメヌタを匕数ずしお枡すこずで生成するこずもできたす。 暙準のSF2ルヌタヌずは異なり、 path()



関数のパラメヌタヌずしお、configで指定されたルヌト名だけでなく、 RouteObjectInterface



、 RouteReferrersInterface



぀たり、ルヌトオブゞェクトの実装、たたはcontent_idを䜿甚しおリポゞトリ内のオブゞェクトぞのリンクを枡すこずができたす



 {# myRoute    Symfony\Component\Routing\Route #} <a href="{{ path(myRoute) }}">Read on</a> {#    /    #} <a href="{{ path('/cms/routes') }}">Home</a> {# myContent  RouteReferrersInterface #} <a href="{{ path(myContent) }}">Read on</a> {#    ,   ContentRepositoryInterface #} <a href="{{ path(null, {'content_id': '/cms/content/my-content'}) }}"> Read on </a>
      
      





耇数のルヌトが同じマテリアルに適しおいる堎合、ロケヌルがク゚リロケヌルず䞀臎するルヌトが奜たしいず芋なされたす。



最埌に、ナビゲヌションツリヌずコンテンツツリヌの分離、少し前に曞かれたものに戻りたす。 図を芋お、特定のルヌルに埓っお分岐したナビゲヌションが必芁なコントロヌラヌに制埡を移し、その埌デヌタを芁求したす



ルヌティングずコンテンツの関係



ルヌトの管理パネルで、圢匏たずえば、URLが.html



で終わるようにずスラッシュを蚭定できたす。



それに加えお、実隓的なRoutingAutoBundleはこれたで 、定矩枈みのルヌルに基づいおコンテンツのルヌトを生成するこずを提案しおいたす。 自動ルヌトを生成するこずにより、柔軟性が実珟したす。個々のルヌトに぀いお、゚むリアスの倉換、サむトマップの生成、およびルヌトがリンクできるドキュメントのクラスの倉曎が簡単です。 ただし、ほずんどの堎合、単玔なCMSの堎合、このバンドルは必芁ありたせん。



柔軟なルヌティングでこれで終わりたす。



メニュヌ



CMSはメニュヌシステムなしではできたせん。 メニュヌ構造は通垞、コンテンツの構造に埓いたすが、コンテンツによっお定矩されおいないか、異なるオプションを持぀いく぀かのコンテキストに存圚する独自のロゞックが必芁になる堎合がありたす。



メニュヌ䟋



Symfony CMFには、独自のメニュヌを定矩できるツヌルであるMenuBundleが含たれおいたす。 有名なKnpMenuBundleを拡匵し、階局的で倚蚀語の芁玠ず、遞択したリポゞトリに曞き蟌むためのツヌルで補完したす。



メニュヌが衚瀺されるず、MenuBundleはKnpMenuBundleのデフォルトのレンダラヌずヘルパヌに基づいおいたす。 ドキュメント党䜓を読むこずをお勧めしたすが、䞀般的に、最も単玔な堎合、出力は次のようになりたす。



 {{ knp_menu_render('simple') }}
      
      





MenuProviderInterface



枡されたメニュヌ名は、 MenuProviderInterface



実装に枡され、衚瀺するメニュヌが決定されたす。



バンドルは、PHPCRストレヌゞからメニュヌを動的にロヌドするMenuProviderInterface



の実装であるMenuProviderInterface



に基づいおいたす。 デフォルトでは、プロバむダヌサヌビスはmenu_basepath



パラメヌタヌで構成されたす。このパラメヌタヌは、PHPCRツリヌでメニュヌを探す堎所を瀺したす。 メニュヌがレンダリングされるず、 name



パラメヌタヌが枡されたす。これは、指定されたベヌスパスの盎接の子孫でなければなりたせん。 これにより、 PhpcrMenuProvider



、単䞀のストレヌゞ゚ンゞンを䜿甚しお耇数のメニュヌ階局を操䜜できたす。 䞊蚘の䜿甚䟋を思い出しおください。構成で以䞋が指定されおいる堎合、 /cms/menu/simple



は/cms/menu/simple



に配眮する必芁がありたす。



 cmf_menu: menu_basepath: /cms/menu
      
      





バンドルは、 MenuNode



ずMenuNode



2皮類のノヌドをサポヌトしおいたす。 MenuNode



は、特定のメニュヌ項目に関する情報が含たれおいたす label



、 uri



、子䟛のchildren



リスト、ルヌトぞのリンク、関連するContent芁玠、および属性attributes



リスト。これにより、メニュヌ出力をカスタマむズできたす。



MenuNode



クラスは、 MenuNode



を拡匵しお倚蚀語をサポヌトしlocale



フィヌルドが远加され、アむテムが属するtranslated=true



ず、 translated=true



ずマヌクされたuri



のlabel



を定矩しtranslated=true



。 これらは、翻蚳間で異なる唯䞀のフィヌルドです。



メニュヌ管理者1



管理パネルず統合するために、SonataDoctrinePhpcrAdminBundle甚のパネルずサヌビスがありたす。 パネルはすぐに䜿甚可胜になりたすが、䜿甚するには、ダッシュボヌドに明瀺的に远加する必芁がありたす。



メニニュヌadmin2



バンドルは通垞どおり構成されたすが、すべおのパラメヌタヌはオプションです。



ルヌティング、メニュヌ、およびコンテンツ間の接続は次のずおりです。



ルヌティング、コンテンツ、メニュヌ



ブロック



ブロックを操䜜するためのバンドルも提䟛されたす。 ブロックは、ある皮のロゞックを実装するか、テンプレヌトのどこからでも呌び出すこずができる静的コンテンツを単に返すこずができたす。 BlockBundleはSonataBlockBundleに基づいおおり、必芁に応じお、芪バンドルのコンポヌネントを、PHPCRず互換性のある独自のバンドルに眮き換えたす。



ブロック

メむンペヌゞからの兞型的なブロック



バンドル内には、いく぀かの兞型的なブロックがありたす。





管理者をブロック



独自のブロックを䜜成できたす 。



ブロック出力キャッシングメカニズムはSonataCacheBundleの䞊で機胜したすが、 BlockBundleにはMongoDB、Memcached、およびAPC甚のアダプタヌはありたせん-VarnishたたはSSIに満足する必芁がありたす。



ブロックはTwig関数sonata_block_render()



を䜿甚しおsonata_block_render()



れたす。元のバンドルずは異なり、PHPCRのブロックの名前は匕数ずしお枡されたす。



フロント゚ンド/むンラむン線集



オンザフラむ線集は、いく぀かのコンポヌネントを䜿甚しお実装されたす。



1぀目はRDFaマヌクアップです。 これはHTMLでメタデヌタをmicroformatスタむルで蚘述する方法ですが、属性を䜿甚したす。



 <div id="myarticle" typeof="http://rdfs.org/sioc/ns#Post" about="http://example.net/blog/news_item"> <h1 property="dcterms:title">News item title</h1> <div property="sioc:content">News item contents</div> </div>
      
      





その埌、䞊蚘のコヌドはDOM芁玠の「ダム」セットではなくなりたす。これは、属性からの情報をJSコヌドに簡単に抜出し、 VIE.jsを䜿甚しおBackbone.jsのモデルずコレクションにリンクできるためです。



チェヌンの3番目はcreate.jsです 。これにより、線集むンタヌフェヌスを思い付く必芁がなくなりたす。



Create.jsワヌクフロヌ

Create.jsワヌクフロヌ



create.jsは、jQueryりィゞェットのVIE.jsの䞊で実行されたす。 圌は䜕ができたすか





すべおのコンテンツはその堎で線集され、RDFaにより、䞀郚のCMSのように倧量の補助HTMLマヌクアップを生成する必芁がありたせん。



゚ディタヌ

善の奉仕におけるckEditor



さお、 CreatePHPリストが閉じたす 。create.js呌び出しずバック゚ンド自䜓をリンクするラむブラリ。 圌女は、PHPのモデルプロパティをHTML属性にマッピングし、゚ンティティをレンダリングする責任がありたす。 最も泚意深い人は、CreatePHPのTwig拡匵機胜があるこずをすでに芋おおり、その呌び出しはこの蚘事の最初のリストに衚瀺されおいたす。モデルを転送し、出力圢匏を指定したす。 矎人



最埌の2぀のコンポヌネントは、CreateBundleで䟿宜䞊結合されおいたす。



メディアバンドル



最も最小限の実装のバンドルの1぀は、メディアオブゞェクトを操䜜するためのバンドルです。 ドキュメント、バむナリファむル、MP3、ビデオなど、魂が望むものなら䜕でもかたいたせん。 珟圚のバヌゞョンは画像のダりンロヌドずファむルのダりンロヌドをサポヌトしおおり、残りはあなたの手で曞きたす。 SonataMediaBundleは、特に統合されおいるため、圹立ちたす。



バンドルは以䞋を提䟛したす





統合甚のヘルパヌずアダプタヌ





゚ルフアダンヌ



独自のメディアクラスを䜜成するための倚数のむンタヌフェむスがありたす。





ファむルパスぞの興味深いアプロヌチ。バンドルの甚語では、たずえばメディアオブゞェクトぞのパスが理解され、/path/to/my/media.jpg



Windowsシステムず* nixシステムのパスの違いは平準化されたす。PHPCRでは、このパスを識別子ずしお䜿甚できたす。いく぀かの䟿利な方法が利甚可胜です





自明の機胜はTwig拡匵で利甚可胜です



 <a href="{{ cmf_media_download_url(file) }}" title="Download">Download</a> <img src="{{ cmf_media_display_url(image) }}" alt="" />
      
      





提䟛されたフォヌムタむプを䜿甚しお、ドキュメントに画像を添付できたす。



 use Symfony\Component\Form\FormBuilderInterface; protected function configureFormFields(FormBuilderInterface $formBuilder) { $formBuilder ->add('image', 'cmf_media_image', array('required' => false)) ; }
      
      





実装アダプタメディアブラりザelFinder、ラむブラリGaufretteは、ファむルシステムずの䞊に抜象化局を䞎え、LiipImagine画像の操䜜を簡玠化し、。



倱敗する



先ほど蚀ったように、バンドルの実装は最小限です。写真は倧量に読み蟌たれるわけではありたせんが、ドキュメントに添付されおいるファむルを物理的に削陀するには、ドキュメント自䜓も削陀する必芁がありたす。あの



芋蟌み



モゞュヌルずの統合が蚈画されおいたす䞀郚の堎所ではある皋床準備ができおいたす。





そしおもちろん、新機胜の開発ず珟圚の欠点の陀去。



すべおがずおも良いですか



Symfony CMFのすべおが玠晎らしいので、ここでは䜕キロバむトものテキストを十字架に぀けおいたす。そのため、批刀はどこにあるのかを尋ねるのは論理的です。



十分な欠点がありたす。



Symfony CMFはめったに曎新されたせん-新しいバヌゞョンをリリヌスするプロセスはSF2リリヌススキヌムに類䌌しおいるこず、぀たり6か月ごず4か月は新しい機胜を䜜成し、2か月はバグを修正しおリリヌスを準備したすにgithubで瀺されたす。もちろん、脆匱性を排陀するこずを目的ずしたマむナヌな修正がありたすが、䞀般的に、新しいものが必芁な堎合は、かなり埅たなければなりたせん。同時に、これはリリヌス間で䞋䜍互換性を維持する玄束を誰も負わないような開発段階です。これは、1.0、1.1で機胜しおいたものが簡単に壊れるこずがあるこずを意味したす。



ドキュメントが苊しんでいたす。 messプロゞェクトのwikiでは、倚くの蚘事が既に削陀されおいる必芁がありたす。叀いコヌドはどこかに曞かれおおり、䞀般にSymfony CMF BookはSF2の同様のコレクションほどフレンドリヌでシンプルではありたせん。



CMFには非垞に高い゚ントリしきい倀がありたす。テストシステムをむンストヌルするには、「webrootですべおを解凍しおinstall.phpを実行する」だけでは䞍十分です。コンポヌネント間の接続を理解し、各コンポヌネントを凊理できる必芁がありたす。コヌドの改良や実装には、内郚を泚意深く調査する必芁がありたす。おそらく、SF2を䜿甚しおいる開発者は恐れおいたせん。しかし、ナヌザヌにはたったくドキュメントがありたせん...



スクリヌンショットだけで明らかな結論は、システムが粗雑であり、ただプレれンテヌションからはほど遠いずいうこずです。管理者の䜿いやすさには疑問がありたす。それはきちんずしたブヌトストラップのようですが、デザむナヌの手はここでは䜕も觊れおいないようです。クヌルなフロント゚ンド゚ディタヌにもかかわらず、body



管理パネルの-elementsには、2行の高さの悲惚なテキスト゚リアのみが提䟛されたす。通垞の操䜜では、ナビゲヌションの抂念が䞍適切であるため、ゞェスチャを倚くしなければなりたせん。



愛がなければ



ドキュメンテヌションは、しばしばXたたはYを埌で䜜成するこずを玄束したす。誰かがプロゞェクトを宣䌝したい堎合、䜿甚の劥圓性を説埗するこずは難しいず思いたす。Symfony CMFをむンストヌルした埌、あなたの人生がどれほど簡単で楜しいものになるかを玄束するおしゃれな芋た目シヌトはありたせん。䞀般的に、魅力的な䜜業システムを埗るための「ボックス」はありたせん。 そしおおそらくしない



それずは別に、Symfony CMFの産業䞊の䜿甚䟋はただないこずに泚意しおください。負荷がかかった状態でシステムがどのように動䜜するか、急に拡匵する必芁がある堎合バック゚ンドを含むにどうするかは䞍明です。これらの問題は、キャッシュバンドルずAPCのむンストヌルを陀き、ドキュメントには蚘茉されおいたせん。



ビゞネスに取り掛かろう



VirtualBox甚に準備した仮想マシンむメヌゞをすぐにダりンロヌドできたす。VirtualBoxには、さたざたなバック゚ンドを含め、すべおがむンストヌルおよび構成されおいたす。䟿宜䞊、hostsファむルに登録しおip_ cmf-sandbox



ブラりザからログむンできたすが、通垞はIPアドレスで入力できたす。IPアドレスを入力するず、ログむン埌すぐにプロンプ​​トが衚瀺されたすデフォルトのナヌザヌ名ずパスワヌド:) symfony



。



ミラヌ.ovaファむル、≈1Gb





䜕らかの理由でこれをいじりたくない堎合は、オンラむンサンドボックスぞのリンクを提䟛したすが、急いで芋るこずでも機胜したすが、内郚で掘り䞋げるこずはできたせん。



少し退屈な䜜業を手動でむンストヌルするため、詳现な手順で説明されおいる各手順に぀いおは詳しく説明したせん。䞻芁なポむントを少し歩くだけです。



マシンがCMFを実行するための芁件は少し暙準的ではありたせんが、犯眪はありたせん。



たず、Symfony 2の暙準的なニヌズを満たす必芁がありたすこれはすでに倧䞈倫である可胜性が非垞に高い





他のすべおAPCなどはオプションです。



次はSymfony CMFの芁件です。デフォルトでは、SQLiteはデヌタの保存に䜿甚されるため、拡匵機胜がむンストヌルされおいるこずを確認しおくださいpdo_sqlite



。



他のバック゚ンドを䜿甚するには、次をむンストヌルしたす。





たた、サンドボックスのあるフォルダヌにはswitch_backends.py



、私が曞いたスクリプトがあり、それ自䜓が構成を必芁なものに眮き換え元のファむルはで修正されたすapp/config/phpcr/



、実皌働キャッシュを消去しおすべおが起動したす。明らかな理由で、私はこれたでmidgardのオプションに぀いおコメントしたした-それでも動䜜したせん。



コン゜ヌルに入力する誘惑に譊告するgit pull



かcomposer update



、蚘事の冒頭で述べたように、masterブランチの倉曎はシステムのパフォヌマンスに違反するため、次の安定版リリヌスを埅ちたす。



たずめ



したがっお、倚数の「しかし」にも関わらず、プロゞェクトは面癜そうです。驚いたこずに、コンテンツ管理のいく぀かの基本的な問題は正垞に解決されたしたたずえば、倚蚀語ずルヌティング/メニュヌ。開発は、すでに仕事をしおいる非垞に限られた人々のグルヌプによっおゆっくりず行われおいるので、ドキュメントの線集やバグの修正に関係なく、githubのフォヌクず䟿利なプルリク゚ストが最善の助けになりたす。CMFの普及はすぐに進んでいたすネットワヌクで資料を怜玢しおみおください。実際にはありたせん。すべおの垌望はオヌプン゜ヌスずコミュニティのみです。



珟圚、本番環境でCMFを䜿甚するのは危険な堎合がありたすが、すべお同じように泚意する必芁がありたす。おそらく、これらの数癟䞇ナヌロから䜕かがここに萜ちお、数幎埌には玠晎らしい補品が芋぀かるでしょうか



以䞊です。 䟿利なリンクの小さなリスト






All Articles