の作成方法を教えてください単純な'こんにちは世界"モジュールざ?
-
05-09-2019 - |
質問
どのように、以下の成ざ?
表示の"Hello World"のメッセージをコントローラー/ビュー/モデルです。このために行った
http://example.com/myController
この文字列'こんにちはのです。されることが少ないと思われるこのstring内のテンプレートのサイト(例えば、ヘッダ、フッターなど) きます。どん追加する方法をこのコントローラー(または新しいコントローラに必要な場合は、との相互作用のモデルは、クエリの実行
Select * FROM articles where id='10'
や行を返します(を含むカラムid, title, content
のコントローラ?使用して、コントローラなどのビュー、表示されます。そのためにもhttp://example.com/myController/show_row
(または類似した内容)という表示は、行内にあります。(仮、echo $row->id;
う思います。)
その他に関する情報ざのコードを構成することもあります。
解決
まず、入されることをお勧めしの PDF/EブックからPHPの建築家.このUS$20であるのか"いろいざ作品"リソースでもしっかり入れています。私も書き始めました ざチュートリアルで私自身のウェブサイト.
第二に、持ちの場合、ないのと、経験豊富なプログラマでないアクセス経験豊富なプログラマ(理想的にはPHP や Java), 選別のカート.ざやバー、バーするショッピングカートに解決するその他のプログラマーでモジュールトップ。いませんでした工学的に理解しやすい人がスマートもなります。
第三に、ざMVCは非常に異なるから Ruby on Rails, Django, CodeIgniter, CakePHP, など。MVCモデルの人気リリースでは以下のセキュリティ開発。うに Zend モデル全体が非常にJava OOP。あ 二つの コントローラが必要。このモジュール/frontNameコントローラー、そして簡単にコントローラです。
第四に、ざもしくは本アプリケーションを利用して同じモジュールシステムだけを使うの魅を核にコードが有効な学習手法.また、多くのあなたは何をしているとのはざ をオーバー 既存ます。また僕に覆はこちら の作成 新機能なよりも優.際は、注意してください。いただいているのコードサンプルがあります。
大変なことになっておろしくお願いします設定方法のコントローラー/ルーターに対応する特定のURL。この小さな新規性を有する。い時期にはモデルについて/テンプレート関連トピックが、今、僕はありません。また簡単に話をSQL質問です。
ざを使用して EAV データベースです。可能な場合には、利用するようにして、モデルオブジェクトのシステムに提供する情報を取得します。かでも最高にカッコいい一枚だけをSQLテーブルがさない方がよいでしょう考えのみを使用してデータを原SQLクエリーはんgo mad.
最終再配布および使用を許可します。まざ約期間を、警告emptor.この運動をこのまっすぐに私の頭のなどではスタックオーバーフロー.
モジュールの作成
すべての追加、カスタマイズをめざして行うモジュールです。なので、からすぐのに必要なのは、新しいモジュールです。をXMLファイル app/modules
その名のとおり
cd /path/to/store/app
touch etc/modules/MyCompanyName_HelloWorld.xml
<?xml version="1.0"?>
<config>
<modules>
<MyCompanyName_HelloWorld>
<active>true</active>
<codePool>local</codePool>
</MyCompanyName_HelloWorld>
</modules>
</config>
MyCompanyNameは独自の名前空間は変更するものではありませんいは一部を弊社からの事前の書面にもお勧めの条約っざ. HelloWorld
の名前のモジュールです。
透明のアプリケーションキャッシュ
このモジュールファイルは、する必要がありませざ知ので、確認しました。の管理者用
- システムへ->キャッシュ管理
- 選択からリフレッシュのすべてのキャッシュメニュー
- [保存]をクリックしますキャッシュ設定
現在、いざことを知っているモジュール
- システムへ->設定
- クリック先端
- のを無効にする"モジュール出力の設定ボックスは、新しいモジュール名を"MyCompanyName_HelloWorld"
できればライブ、パフォーマンスを遅くするためのアプリケーションキャッシュを開発。なものはない悔しさを忘れ、明確にキャッシュとなんだろうなご変更はない。
設定のディレクトリ構造
次に、私ための設定ディレクトリ構造のモジュールです。なすべてのこれらのディレクトリがありません設定を最大限に引き出してます。
mkdir -p app/code/local/MyCompanyName/HelloWorld/Block
mkdir -p app/code/local/MyCompanyName/HelloWorld/controllers
mkdir -p app/code/local/MyCompanyName/HelloWorld/Model
mkdir -p app/code/local/MyCompanyName/HelloWorld/Helper
mkdir -p app/code/local/MyCompanyName/HelloWorld/etc
mkdir -p app/code/local/MyCompanyName/HelloWorld/sql
および構成ファイルの追加
touch app/code/local/MyCompanyName/HelloWorld/etc/config.xml
中の設定ファイルに以下の変数を追加しますが、基本的には"白"を設定します。
<?xml version="1.0"?>
<config>
<modules>
<MyCompanyName_HelloWorld>
<version>0.1.0</version>
</MyCompanyName_HelloWorld>
</modules>
</config>
Oversimplifyingも、この設定ファイルをごんざどのコードを実行したい.
設定はルーター
次に、必要な設定、モジュールのルーター.このシステムのうち扱Urlの形式
http://example.com/magento/index.php/helloworld
なので、設定ファイルに以下の変数を追加します。
<config>
<!-- ... -->
<frontend>
<routers>
<!-- the <helloworld> tagname appears to be arbitrary, but by
convention is should match the frontName tag below-->
<helloworld>
<use>standard</use>
<args>
<module>MyCompanyName_HelloWorld</module>
<frontName>helloworld</frontName>
</args>
</helloworld>
</routers>
</frontend>
<!-- ... -->
</config>
何なんて言ってここでは"任意のURLをfrontNameのhelloworld...
http://example.com/magento/index.php/helloworld
のfrontNameコントローラMyCompanyName_HelloWorld".
そこで、上記の構成、読み込んだ場合のhelloworldページ以上を取得するでしょう404ページです。それがまだ作成したファイルのために当社のコントローラです。うことです。
touch app/code/local/MyCompanyName/HelloWorld/controllers/IndexController.php
いくつかの荷重のページです。進行中!●で404を取得するでしょうPHP/ざ例外
Controller file was loaded but class does not exist
なので、ファイルを開きまを作成し、貼り付け、以下のコードです。クラスの名前に基づいて作成されるべきである名お客様よりご提供いただいたお場合を例に説明します。
<?php
class MyCompanyName_HelloWorld_IndexController extends Mage_Core_Controller_Front_Action{
public function indexAction(){
echo "We're echoing just to show that this is what's called, normally you'd have some kind of redirect going on here";
}
}
うまでセットアップは、モジュール/frontNameコントローラです。これはデフォルトのコントローラのデフォルトアクションのモジュールです。を追加したい場合にコントローラはするようになっております。うひとつ忘れてはいけないと、ツリーの最初の一部ざURLは不変でも、常にこのように http://example.com/magento/index.php/frontName/controllerName/actionName
だいたい合わせこのurl
http://example.com/magento/index.php/helloworld/foo
いてFooControllerることができるように
touch app/code/local/MyCompanyName/HelloWorld/controllers/FooController.php
<?php
class MyCompanyName_HelloWorld_FooController extends Mage_Core_Controller_Front_Action{
public function indexAction(){
echo 'Foo Index Action';
}
public function addAction(){
echo 'Foo add Action';
}
public function deleteAction(){
echo 'Foo delete Action';
}
}
ごとのデフォルトのコントローラIndexController、デフォルトのアクションindexActionできる暗黙って明示的に合っ越します。なので http://example.com/magento/index.php/helloworld/foo
マッチのコントローラFooControllerの行動indexActionな行動fooActionのIndexController.したい場合についてのfooActionのコントローラIndexControllerそれを呼このコントローラを明示的にこのような方法:http://example.com/magento/index.php/helloworld/index/foo
ためのurlの一部は、常にcontrollerName.この挙動は、相続、Zend Frameworkに同梱ざ.
現時点ですべき、以下のUrlを参照の結果のジョインポイントを選択し
http://example.com/magento/index.php/helloworld/foo
http://example.com/magento/index.php/helloworld/foo/add
http://example.com/magento/index.php/helloworld/foo/delete
そうする基本的な考え方かざ派遣をコントローラです。ここからさんお勧めの書込処理では、既存のコントローラざ授業はどのモデルのテンプレート/レイアウトシステムを使用すること。
他のヒント
私は先月かそこらのためにMagentoのと格闘してきたと私はまだそれを理解しようとしています。これはブラインドをリードブラインドの場合です。ドキュメントやフォーラムの方法で少しはあります/ wikiにはせいぜい混沌です。それだけでなく、古くなったり、最適なから遠くのどちらかであるいくつかのソリューションがあります。 私はあなたのプロジェクトを持っているか、それを把握しようとしているかどうかわからないんだけど、あなたは完全に新しいものを作るとは対照的に、既存の機能を変更することで開始した場合、それはおそらく簡単です。そのために私は間違いなくウィキの「開発者のためのお勧めの記事」で行くと思います。新しい支払い方法1は、実際目を見張るだっます。
デバッグのために私は間違いなくFirePHP を使用してをお勧めしますし、あなたのHTMLソースを見て何かがうまくいかないとき。 OLEエコーデバッグ方法は本当にすべてがうまく動作しません。
一般的なアーキテクチャはとても心numbinglyコンプレックス、私はそれを完全に理解していても、私はそれをカバーするために本を書く必要があるだろうということです。私ができる最善のは私が最初に始めたとき、誰かが私に与えていた...たいあなたにアドバイスを与えることである。
コアファイルから近づきません。それらを変更しないでください、代わりに独自のモジュールを書いて、あなたが必要なものをオーバーライドします。
Magentoのは、それが行う必要があるかを決定するためにXMLからなる設定ファイルを使用しています。コア機能とは対照的に、それはあなた自身のものを実行するために取得するためには、正しいXMLを必要とします。残念ながらXMLを構築する方法にはガイドがありません。あなたは例を見て、いくつかの深刻なテストを行う必要があります。これらのファイルの内容物事を複雑にするには、大部分は大文字と小文字を区別します。あなたはこれらをマスターする場合は、あなたは非常に強力なシステムになり、基本的な機能の一部を上書きすることができます。
Magentoのは、特定のクラスのオブジェクトを返すようにMage::getModel('mymodel')
、Mage::getSingleton('mysingleton')
、Mage::helper('myhelper')
ようなメソッドを使用しています。それは、その中核の名前空間では、デフォルトでこれらを見つけることができます。あなたはそれがあなた自身を使用する場合は、あなたのconfig.xml
ファイルでこれらをオーバーライドする必要があります。
あなたのクラスの名前は、彼らがしているフォルダに対応している必要があります。
Magentoの内のオブジェクトの多くは、最終的Varien_Object
と呼ばれるものを拡張します。これは、(一種のスイスアーミーナイフのような)汎用クラスであり、生活の中で、その目的は、あなたがその場で独自のメソッド/変数を定義することができるようにすることです。たとえば、あなたはそれが別の方法でデータを渡すために見せかけ配列として使用表示されます。
開発時には、あなたが無効になっているキャッシュを確認してください。これは、Magentoのは耐え難いほど遅くなりますが、それはあなたが(あなたの机の上にそれを叩いてからの)頭部外傷の多くを保存します。
あなたは$this
が多く使用されて表示されます。それはあなたがそれを参照してくださいどのファイルに応じて、異なるクラスを意味します。 get_class($this)
は特にFirePHPと一緒に、あなたの友達です。
紙の上のものを書き留め。たくさん。あなたがそれらが発生した1〜2日後に必要つもりだ無数の小さな擬似事実があります。
MagentoのはOOを愛しています。メソッドをトレースすることは5-10異なるクラスを介して表示されます場合も驚かないでください。
がある以上だが、これは論文に変わる前に、私はここで停止されます。
私はむしろ、これはあなたが定型を生成するのに役立ちますし、あなただけのコアビジネスに集中することができ、 Mage2Gen のをお勧めします論理。それだけで物事をスピードアップに役立ちます。
Aざモジュールのグループディレクトリを含むブロック、コントローラー、ヘルパー、モデルを作成するために必要な特定の店の特徴です。このユニットのカスタマイズさざいますざモジュールで作成した複数の機能をサポートするロジックの影響ユーザーの経験や店頭登場です。での生活サイクルがあるので設置され、削除、または無効になります。の両面から加盟店および拡張開発者は、モジュールの中央ユニットのはざいます
宣言のモジュール
して申告するモジュールの設定ファイルを指定します。とざ2検索のための設定モジュールなどのディレクトリのモジュールです。今までの作成設定ファイルmodule.xml.
コードのようなものです:
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd"> <module name="Cloudways_Mymodule" setup_version="1.0.0"></module> </config>
登録のモジュール このモジュールに登録する必要がありますざ2システムを用いざ成分名簿管理人です。今までファイルを作成しregistration.php のモジュールのルートディレクトリ:
app/code/Cloudways/Mymodule/registration.php
コードのようなものです:
?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Cloudways_Mymodule',
__DIR__
);
チェックモジュールの状況 後に上記の手順を作成した単純なモジュールです。これからの状態をチェックモジュールかどうかを有効または無効にするには以下のコマンドライン:
php bin/magento module:status
php bin/magento module:enable Cloudways_Mymodule
アだったを通じて完全なプロセス
私はmagaplazaのHello Worldのチュートリアルからの私のモジュールを作成しようとしていたが、何かが間違っていました。私は、このモジュールのコードをインポート https://github.com/astorm/magento2-hello-world githubのから、それが働きました。 そのモジュールから、私はそれのカテゴリは、AJAXを選択し、ドロップダウンモジュールをサブカテゴリに作成しました。 // WWW:あなたのmagento2インストールのAAP /コードのディレクトリにインストールした後... HTTPこのURLに従ってください.example.comと/ hello_mvvm /ハロー/世界に あなたは https://github.com/sanaullahAhmad/Magento2_cat_subcat_ajax_select_dropdowns に、ここからそのコードをダウンロードし、それを配置することができますあなたのAAP /コードフォルダ。 これらのコマンドを実行するよりも...
php bin/magento setup:update
php bin/magento setup:static-content:deploy -f
php bin/magento c:c
今、あなたは、次のURLをhttpでモジュールの機能を確認することができます:// {{}} www.example.com / hello_mvvm /ハロー/世界