web-dev-qa-db-ja.com

prestashopでモジュールコントローラーへのリンクを生成する方法

Prestashopでモジュールコントローラーへのリンクを生成する正確な方法は何ですか?また、実際にコントローラーのクラスにどのように名前を付け、URLパラメーターをミラーリングする必要がありますか?

9
Luca Reghellin

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..]);
_
26
Luca Reghellin

リンクを作成する別の方法は、次のようにビュー(テンプレートファイル)でハイパーリンクを使用することです。

 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」がないため、次のエラーが発生します。

enter image description here

注2:この最も優れたチュートリアル(完全な具体例を使用)を使用して、自分のプロジェクトを開始しました: http:// nemops.com/creating-new-pages-in-prestashop/#.VjpH2LerRhF