オーキッドCMS-Laravelの別のCMS





はい、はい、はい、あなたはすべてを正しく読みます、別のコンテンツ管理システム、あなたはすぐにレンガを手に入れ、あなたのトーチに火をつけるためにコメントに行くことができます。



スリムフレームワークに関する最初の記事を初めて書いたとき、ハブに関するコメントで多くの人にLaravelを試すように勧められました。 私は彼が好きだと言って、何も言わない。 しかし、速度が必要なサイトの開発に携わったため、使用する正当な理由を見つけることは困難でした。唯一の方法は、暇なときに管理パッケージを作成することでした。これにより、お気に入りのテクノロジーを使用できます。



はじめに



まず、「デザインテーマ」、「プラグイン」、「ルーティングコントロール」など、CMSに典型的なソリューションを拒否しました。 すぐにきれいにしましょう。作業サイトでデザインの変更が必要になることはあまりありません。プラグインは、作曲家にとってより良い開発者が何らかの方法で配置する必要があります。 実際にはバージョン管理システムと競合するため、テンプレートやその他のパラメーターのエディターもありません。



ハイライト



まず、各開発者がロジックを変更したり拡張したりできるスキームが開発されました。 おそらく理想的なオプションは存在しないため、タブを含むフォームが最初に作成され、各タブは独立しており、別のタブが存在することはわからず、フォームが送信されるとデータが順番に来るというアプローチが選択されたため、十分に長い間考えなければなりませんでしたタブ。 したがって、誰でもこれらのタブを好きなだけ作成して、フォームにパラメータを追加することができます。



たとえば、デフォルトでは2つのタブに一般情報とアクセス権が示されているユーザーフォームがあり、新しいフォーム(イベントを介して登録)を追加することでさまざまな情報を展開および追加できますが、コードではフォームのビューのみが表示され、結果のモデルで実行されるアクション。 このアプローチにより、すでに標準のタブを拡張し、必要なニーズにより良く適応させることができます。



展開できるフォームの例







この分野では、データの保存方法について考え始める必要がありました。 構造について考えると、ほとんどのサイト(会社が開発中)で構造のデータが非常に類似しており、時には翻訳ストレージが必要であることに気付かないことはありませんでした。 これにより、EAV形式について考える理由が得られましたが、モバイルアプリケーションに非リレーショナルデータベースを使用していた、隣接部門の開発者からのEAV形式の保存方法に関する質問に対する答えが見つかりました。 これをMySQLおよびPostgreSQLに転送すると、システムはすでにデータの格納にJSONタイプを使用し、ストレージと使いやすさの問題を継続し、ワードプレス構造を再現しました。つまり、レコードテーブルを作成し、データはJSON形式で格納されました。 操作を実行するために、そのタイプを示すために別のフィールドが使用されました。 その助けを借りて、レコード自体を制御することが可能になります。



つまり、開発者は、編集のために表示するフィールドと、どのような形式で表示するフィールド、およびそれ自体を構築するためのフォームを記述する必要がありました。 検証、またはモジュール、モジュールを指定することもできます-これらは、上で説明したまさにその形式です。



レコード管理の例



namespace DummyNamespace; use Orchid\Behaviors\Many; class DummyClass extends Many { /** * @var string */ public $name = ''; /** * @var string */ public $slug = ''; /** * @var string */ public $icon = ''; /** * Slug url /news/{name}. * @var string */ public $slugFields = ''; /** * Rules Validation. * @return array */ public function rules() { return []; } /** * @return array */ public function fields() { return []; } /** * Grid View for post type. */ public function grid() { return []; } /** * @return array */ public function modules() { return []; } }
      
      





フィールドと動作は個別に指定されます。これにより、たとえば、Wysing Editorが必要なレコードでキーのみを使用でき、値はクラスになります。 これにより、ほぼワンクリックでエディターをsummernoteからtinymceまたはckeditorに変更できます。



 'types' => [ App\Core\Behaviors\Many\DemoPost::class, ], 'fields' => [ 'textarea' => Orchid\Fields\TextAreaField::class, 'input' => Orchid\Fields\InputField::class, 'tags' => Orchid\Fields\TagsField::class, 'robot' => Orchid\Fields\RobotField::class, 'place' => Orchid\Fields\PlaceField::class, 'datetime' => Orchid\Fields\DateTimerField::class, 'checkbox' => Orchid\Fields\CheckBoxField::class, 'path' => Orchid\Fields\PathField::class, 'code' => Orchid\Fields\CodeField::class, 'wysiwyg' => \Orchid\Fields\SummernoteField::class, ],
      
      





これらのソリューションを使用すると、開発者はさまざまな種類のデータに対して数分でCRUDを構築できます。新しいパラメーターを追加して変更するには、説明に新しい値を導入するだけです。



レコード入力フォームの例







開発初期のデザインに関する別のポイント、そしておそらく今でもほとんどすべての管理パネルはAdminLTEを使用しましたが 、悪いことや他のことを言いたくはありませんが、正直なところ、価格についてデザイナーに話すのはうんざりしています、それは私の選択肢ではありません。 唯一の解決策はネットワークでした。その後、美しいPSDモックアップを探しに行き、 Dashboard60 UI Kitを見つけて、それを購入したので、(耳を乗り越えないように)要点を正確に、または大まかに再現し始めました。



この段階で、すべての「一意性」が終了し、 標準的なことが始まります。





まとめ



要約すると、このシステムはすでにLaravelで作業しており、クイックスタートで「シンプルなサイト」を作成するためにそれを使用したい人にのみ関心があります。これは、 インストール段階でも見られます。展開用のスターターパッケージであるOrchidもパッケージとして機能します。つまり、最初にフレームワーク自体を展開し、その後パッケージを追加する必要があります。



すべてのコードはgithub.comで公開されています



All Articles