Prestashopでモジュールコントローラーへのリンクを生成する正確な方法は何ですか?また、実際にコントローラーのクラスにどのように名前を付け、URLパラメーターをミラーリングする必要がありますか?
Linkクラスのインスタンスを使用します。通常、作成する必要はなく、_context->link
_を使用するだけです(例:コントローラー_$this->context-link
_を形成します)。メソッドはgetModuleLink()
なので、次のようになります。
_$this->context->link->getModuleLink('module_folder_name','controller_name',array_of_params);
_
命名に注意してください:
モジュールフォルダ名はまさにそれです。
コントローラは正しいパスにある必要があります。たとえば、module/controllers/front/controller.php
ファイル名は小文字のアクションです。クラス名はModuleFolder + Action + "ModuleFrontController"です。
したがって、たとえば:
module dir: orderattachment
controller: orderattachment/controllers/front/pdf.php
コントローラクラス:
_class OrderAttachmentPdfModuleFrontController extends ModuleFrontController
_
リンク:
_$this->context->link->getModuleLink('orderattachments', 'pdf', [params..]);
_
リンクを作成する別の方法は、次のようにビュー(テンプレートファイル)でハイパーリンクを使用することです。
index.php?fc=module&module=MODULE_NAME&controller=CONTROLLER_NAME
たとえば、自動車修理店のeコマースでは、顧客は次の予約時に所有する車を設定する必要があります(モジュールは右の列にフックされています)。
彼/彼女の車両が存在しない場合、彼/彼女は新しいものを作成する必要があります(呼び出すフロントコントローラーのページ)。
私の例では、ビューでは、リンクは次のようになります。
<a href="index.php?fc=module&module=vehiclefile&controller=newvehicle">{l s='Create a new vehicle' mod='vehicleFile'}</a>
注:Stratboyの回答で述べたように、命名規則は非常に重要です。ページを見つけることができません。例として、
class VehicleFileNewVehicleModuleFrontControlle extends ModuleFrontController
クラス名に「controller」の「r」がないため、次のエラーが発生します。
注2:この最も優れたチュートリアル(完全な具体例を使用)を使用して、自分のプロジェクトを開始しました: http:// nemops.com/creating-new-pages-in-prestashop/#.VjpH2LerRhF