あなたのsymfonyビューをNumberNine
Symfonyを使用して簡単なページを構築するときは、通常、コントローラとビューを持って終了します.
しばしば、物事は複雑になり、1つのコントローラはもう実行可能な解決策ではありません.
Symfonyは複数のコントローラにビューを分割する方法をいくつか提供しています.ナンバー9 CMSは、もう2を提供します.それぞれの方法が提供するどの円錐とプロを見ます. Twigパーティションの使用 Twigパーティションの使用 使用embedded controllers
使用Twig components
Numbernineコンポーネントの使用
NumberNineのショートコードの使用
Twigは含まれており、埋め立ては素晴らしいと柔軟性がありますが、そのデータは、上記のルートコントローラから肥大化されます.もちろん、サービスにアクセスするには、Twig拡張やグローバル変数などの回避策がありますが、ビューでは、コントローラが送信しなかったデータを取得してはいけません.
彼らが新しい要求をして、否定的にパフォーマンスに影響を及ぼすので、彼らが散発的に使われるならば、埋め込まれたコントローラは良い解決です.
ツイッグコンポーネントは、いくつかの制限がありますが、埋め込みコントローラよりも優れたアプローチです.コンポーネントは非共有サービスです.これは、新しいインスタンスが
NumberNixコンポーネントは、コンポーネントが呼び出されるたびに、テンプレートパラメータの新しいセットを作成することによって、Twigコンポーネントの別のインスタンスの問題を解決しますが、コンポーネントのインスタンス自体は同じままです.
NumberNineコンポーネントは共有サービスです.したがって、イベントリスナーが登録されたイベントをキャッチします.パラメータ注入はセッターを通して行われます.
具体例です.
Read more ドキュメントページのコンポーネントについて.
コンポーネントは開発者指向ですが、ショートコードはビューにテンプレートを注入するユーザー指向の方法です.
また、BBCodes、ショートコードとして広く使用されているフォーラムやCMSの年間で使用されます.それらは、ユーザが編集者に入力できる文字列で表される.
短い構文です.
例として、このページヘッダを解析します.
今、シーンの背後に表示される方法を見てください.
これはエディタでの手動入力の結果ではありません.詳細については、ページビルダーについてのこの記事の最後のセクションを参照してください.
我々の見解分割に戻ってください.それを単に置くために、このヘッダーは9つのコントローラと9つの見解から成ります.
しましょう
以上です.私たちの意見は、多くの方法で分割することができますし、まだ高性能を維持することができます.主制御装置は非常に軽いままでいます、そして、すべての部分的なコントローラは彼ら自身の応答性を取り扱います.これは、コードを非常に再利用可能な開発者とユーザーの両方を使用して簡単になります.
Read more ドキュメントページのショートコードについて.
Numbernineのページビルダーは、ビューを構築するショートコードに依存します.各ショートコードは、編集可能なショートコードとして定義できます.これは、ユーザーに使用可能なコンポーネントのページビルダーのリストに表示されます.
これは他の記事のトピックです.一方check out the documentation ショートビルダーでページビルダーコンポーネントを構築する方法を確認します.
しばしば、物事は複雑になり、1つのコントローラはもう実行可能な解決策ではありません.
Symfonyは複数のコントローラにビューを分割する方法をいくつか提供しています.ナンバー9 CMSは、もう2を提供します.それぞれの方法が提供するどの円錐とプロを見ます.
include
{% include 'my_partial.html.twig' with {message: 'hello'} %}
embed
{% embed 'my_partial.html.twig' %}
{% block message %}hello{% endblock %}
{% endembed %}
{{ render(controller('MyController', {message: 'hello'})) }}
{{ component('my_component', {message: 'hello'}) }}
{{ N9_component('MyComponent', {message: 'hello'}) }}
{{ N9_shortcode('[my_shortcode message="hello"]') }}
各手法の長所
Twigは含まれており、埋め立ては素晴らしいと柔軟性がありますが、そのデータは、上記のルートコントローラから肥大化されます.もちろん、サービスにアクセスするには、Twig拡張やグローバル変数などの回避策がありますが、ビューでは、コントローラが送信しなかったデータを取得してはいけません.
彼らが新しい要求をして、否定的にパフォーマンスに影響を及ぼすので、彼らが散発的に使われるならば、埋め込まれたコントローラは良い解決です.
ツイッグコンポーネントは、いくつかの制限がありますが、埋め込みコントローラよりも優れたアプローチです.コンポーネントは非共有サービスです.これは、新しいインスタンスが
{{ component('my_component') }}
, 以前に保存されたデータを消去する.これは、コンポーネントがイベントリスナーを登録した場合、そのインスタンスがその場で作成されたときに動作しません.コンポーネント
NumberNixコンポーネントは、コンポーネントが呼び出されるたびに、テンプレートパラメータの新しいセットを作成することによって、Twigコンポーネントの別のインスタンスの問題を解決しますが、コンポーネントのインスタンス自体は同じままです.
NumberNineコンポーネントは共有サービスです.したがって、イベントリスナーが登録されたイベントをキャッチします.パラメータ注入はセッターを通して行われます.
具体例です.
# templates/page/show.html.twig
{{ N9_component('MyComponent', {example: 'string variable'}) }}
// src/Component/MyComponent/MyComponent.php
final class MyComponent implements ComponentInterface
{
private string $example;
public function setExample(string $example): void
{
$this->example = $example;
}
public function getTemplateParameters(): array
{
return [
'example' => $this->example,
];
}
}
// src/Component/MyComponent/template.html.twig
<p>Displaying custom variable: {{ example }}.</p>
また、Numbernineの他のすべてのビューと同様に、コンポーネントテンプレートはオーバーライド可能です.あなたが使用するテーマは多分コンポーネントを使用します、そして、あなたは多分デザインを適応させたいでしょう.Read more ドキュメントページのコンポーネントについて.
NumberNine shortcodes
コンポーネントは開発者指向ですが、ショートコードはビューにテンプレートを注入するユーザー指向の方法です.
また、BBCodes、ショートコードとして広く使用されているフォーラムやCMSの年間で使用されます.それらは、ユーザが編集者に入力できる文字列で表される.
短い構文です.
[my_shortcode message="hello"]
または拡張構文[my_shortcode]hello[/my_shortcode]
拡張構文は入れ子になったショートコードを許可します:[my_shortcode]
[my_nested_shortcode message="hello"]
[/my_shortcode]
NumberNineサービスとしてショートコードを処理します.各ショートコードには、コントローラのように動作する独自のクラスがあります.例として、このページヘッダを解析します.
今、シーンの背後に表示される方法を見てください.
これはエディタでの手動入力の結果ではありません.詳細については、ページビルダーについてのこの記事の最後のセクションを参照してください.
我々の見解分割に戻ってください.それを単に置くために、このヘッダーは9つのコントローラと9つの見解から成ります.
しましょう
my_account_link
それは非常に基本的なショートコードとしてショートコードとどのように構築されて参照してください.その目的はユーザ定義の「マイアカウント」ページに自動的にリンクすることです./**
* @Shortcode(name="my_account_link", label="My Account Link")
*/
final class MyAccountLinkShortcode extends AbstractShortcode
{
public function configureParameters(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'loggedOutText' => 'Login / Register',
'loggedInText' => 'My account',
]);
}
public function processParameters(array $parameters): array
{
return [
'loggedOutText' => $parameters['loggedOutText'],
'loggedInText' => $parameters['loggedInText'],
];
}
}
テンプレートは次のようになります.<a href="{{ N9_path(PAGE_FOR_MY_ACCOUNT) }}">
{%- if is_granted('IS_AUTHENTICATED_REMEMBERED') -%}
{{ loggedInText|trans }}
{%- else -%}
{{ loggedOutText|trans }}
{%- endif -%}
</a>
今では開発者によって使用することができます{{ N9_shortcode('[my_account_link]') }}
, または、テキストエディタでユーザーによって直接[my_account_link]
.以上です.私たちの意見は、多くの方法で分割することができますし、まだ高性能を維持することができます.主制御装置は非常に軽いままでいます、そして、すべての部分的なコントローラは彼ら自身の応答性を取り扱います.これは、コードを非常に再利用可能な開発者とユーザーの両方を使用して簡単になります.
Read more ドキュメントページのショートコードについて.
ショートコードとページビルダ
Numbernineのページビルダーは、ビューを構築するショートコードに依存します.各ショートコードは、編集可能なショートコードとして定義できます.これは、ユーザーに使用可能なコンポーネントのページビルダーのリストに表示されます.
これは他の記事のトピックです.一方check out the documentation ショートビルダーでページビルダーコンポーネントを構築する方法を確認します.
続きを読む
Nummonnine CMSによるステロイドのsymfony
のためのウィリアムアリン・ 8月8日・ 2分読む
#symfony
#php
#cms
Reference
この問題について(あなたのsymfonyビューをNumberNine), 我々は、より多くの情報をここで見つけました https://dev.to/numberninecms/split-your-symfony-views-into-multiple-controllers-with-numbernine-cms-2nj0テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol