I can add a link on my account left menu, but when I click it, it gives me an 404 error.
Is there anything wrong with my files' location? Or is it the problem of my code?
My Controller:
class Mage_Customer_TrainingController extends Mage_Core_Controller_Front_Action { protected function _getSession() { return Mage::getSingleton('customer/session'); } public function preDispatch() { parent::preDispatch(); if (!Mage::getSingleton('customer/session')->authenticate($this)) { $this->setFlag('', 'no-dispatch', true); } } public function indexAction() { $this->loadLayout(); $this->renderLayout(); } }
Contorller Location:
customer.xml for layout
<reference name="left_first"> <block type="customer/account_navigation" name="customer_account_navigation" before="-" template="customer/account/navigation.phtml"> <action method="addLink" translate="label" module="customer"><name>account</name><path>customer/account/</path><label>Account Dashboard</label></action> <action method="addLink" translate="label" module="customer"><name>account_edit</name><path>customer/account/edit/</path><label>Account Information</label></action> <action method="addLink" translate="label" module="customer"><name>address_book</name><path>customer/address/</path><label>Address Book</label></action> <action method="addLink" translate="label" module="customer"><name>training</name><path>customer/training/</path><label>Training Material</label></action> </block> </reference>
my custom page layout xml:
<customer_training_index translate="label"> <label>Customer Training</label> <!-- Mage_Customer --> <update handle="customer_account"/> <reference name="my.account.wrapper"> <block type="customer/training" name="customer_training" template="customer/training/training.phtml"/> </reference> </customer_training>
My real customer page layout phtml:
Location:
Code:
<div class="dashboard"> <div class="page-title"> <h1><?php echo $this->__('Healthy Living & Knowledge of Chinese Medicine') ?></h1> </div> <?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('training_material')->toHtml(); ?> </div>
My Block:
Location:
Code:
<?php class Mage_Customer_Block_Training extends Mage_Customer_Block_Account_Dashboard // Mage_Core_Block_Template { // public function __construct() // { // parent::__construct(); // $this->setTemplate('customer/form/training.phtml'); // } // public function getIsSubscribed() // { // return $this->getSubscriptionObject()->isSubscribed(); // } public function getTrainingUrl() { return $this->getUrl('customer/training/'); } }
Hi @billyChanVG
Can you update your question with the modules's config.xml file ?
Here you are. My other pages in the account dashboard work fine, only this one fail
<?xml version="1.0"?> <config> <modules> <Mage_Customer> <version>1.6.2.0.4</version> </Mage_Customer> </modules> <admin> <fieldsets> <customer_dataflow> <store_id> <system>1</system> </store_id> <store> <ignore>1</ignore> </store> <entity_id> <system>1</system> <ignore>1</ignore> </entity_id> <attribute_set_id> <system>1</system> <ignore>1</ignore> </attribute_set_id> <attribute_set> <ignore>1</ignore> </attribute_set> <entity_type_id> <system>1</system> </entity_type_id> <increment_id> <system>1</system> <ignore>1</ignore> </increment_id> <parent_id> <system>1</system> </parent_id> <created_at> <system>1</system> </created_at> <updated_at> <system>1</system> </updated_at> <group_id> <ignore>1</ignore> </group_id> <type_id> <system>1</system> <ignore>1</ignore> </type_id> <type> <ignore>1</ignore> </type> <created_in> <system>1</system> <ignore>1</ignore> </created_in> <website_id> <system>1</system> </website_id> <default_billing> <system>1</system> </default_billing> <default_shipping> <system>1</system> </default_shipping> <prefix> <billing>1</billing> <shipping>1</shipping> <mapped>1</mapped> </prefix> <firstname> <billing>1</billing> <shipping>1</shipping> <required>1</required> <mapped>1</mapped> </firstname> <middlename> <billing>1</billing> <shipping>1</shipping> <mapped>1</mapped> </middlename> <lastname> <billing>1</billing> <shipping>1</shipping> <required>1</required> <mapped>1</mapped> </lastname> <suffix> <billing>1</billing> <shipping>1</shipping> <mapped>1</mapped> </suffix> <street_full> <billing>1</billing> <shipping>1</shipping> </street_full> <street1> <billing>1</billing> <shipping>1</shipping> <street>1</street> </street1> <street2> <billing>1</billing> <shipping>1</shipping> <street>1</street> </street2> <street3> <billing>1</billing> <shipping>1</shipping> <street>1</street> </street3> <street4> <billing>1</billing> <shipping>1</shipping> <street>1</street> </street4> <street5> <billing>1</billing> <shipping>1</shipping> <street>1</street> </street5> <street6> <billing>1</billing> <shipping>1</shipping> <street>1</street> </street6> <street7> <billing>1</billing> <shipping>1</shipping> <street>1</street> </street7> <street8> <billing>1</billing> <shipping>1</shipping> <street>1</street> </street8> <city> <billing>1</billing> <shipping>1</shipping> </city> <region> <billing>1</billing> <shipping>1</shipping> </region> <country> <billing>1</billing> <shipping>1</shipping> <billing_required>1</billing_required> <shipping_required>1</shipping_required> </country> <postcode> <billing>1</billing> <shipping>1</shipping> <billing_required>1</billing_required> <shipping_required>1</shipping_required> </postcode> <telephone> <billing>1</billing> <shipping>1</shipping> </telephone> <company> <billing>1</billing> <shipping>1</shipping> </company> <fax> <billing>1</billing> <shipping>1</shipping> </fax> </customer_dataflow> </fieldsets> </admin> <global> <fieldsets> <customer_account> <prefix> <create>1</create> <update>1</update> <name>1</name> </prefix> <firstname> <create>1</create> <update>1</update> <name>1</name> </firstname> <middlename> <create>1</create> <update>1</update> <name>1</name> </middlename> <lastname> <create>1</create> <update>1</update> <name>1</name> </lastname> <suffix> <create>1</create> <update>1</update> <name>1</name> </suffix> <email> <create>1</create> <update>1</update> </email> <password> <create>1</create> </password> <confirmation> <create>1</create> </confirmation> <dob> <create>1</create> <update>1</update> </dob> <taxvat> <create>1</create> <update>1</update> </taxvat> <gender> <create>1</create> <update>1</update> </gender> </customer_account> <customer_address> <vat_id> <to_quote_address>*</to_quote_address> </vat_id> <vat_is_valid> <to_quote_address>*</to_quote_address> </vat_is_valid> <vat_request_id> <to_quote_address>*</to_quote_address> </vat_request_id> <vat_request_date> <to_quote_address>*</to_quote_address> </vat_request_date> <vat_request_success> <to_quote_address>*</to_quote_address> </vat_request_success> </customer_address> <sales_convert_order_address> <vat_id> <to_quote_address>*</to_quote_address> </vat_id> <vat_is_valid> <to_quote_address>*</to_quote_address> </vat_is_valid> <vat_request_id> <to_quote_address>*</to_quote_address> </vat_request_id> <vat_request_date> <to_quote_address>*</to_quote_address> </vat_request_date> <vat_request_success> <to_quote_address>*</to_quote_address> </vat_request_success> </sales_convert_order_address> <sales_convert_quote_address> <vat_id> <to_order_address>*</to_order_address> <to_customer_address>*</to_customer_address> </vat_id> <vat_is_valid> <to_order_address>*</to_order_address> <to_customer_address>*</to_customer_address> </vat_is_valid> <vat_request_id> <to_order_address>*</to_order_address> <to_customer_address>*</to_customer_address> </vat_request_id> <vat_request_date> <to_order_address>*</to_order_address> <to_customer_address>*</to_customer_address> </vat_request_date> <vat_request_success> <to_order_address>*</to_order_address> <to_customer_address>*</to_customer_address> </vat_request_success> </sales_convert_quote_address> <sales_copy_order_billing_address> <vat_id> <to_order>*</to_order> </vat_id> <vat_is_valid> <to_order>*</to_order> </vat_is_valid> <vat_request_id> <to_order>*</to_order> </vat_request_id> <vat_request_date> <to_order>*</to_order> </vat_request_date> <vat_request_success> <to_order>*</to_order> </vat_request_success> </sales_copy_order_billing_address> </fieldsets> <customer> <address> <formats> <text translate="title" module="customer"> <title>Text</title> </text> <oneline translate="title" module="customer"> <title>Text One Line</title> </oneline> <html translate="title" module="customer"> <title>HTML</title> <htmlEscape>true</htmlEscape> </html> <pdf translate="title" module="customer"> <title>PDF</title> </pdf> <js_template template="title" module="customer"> <title>JavaScript Template</title> </js_template> </formats> </address> </customer> <blocks> <customer> <class>Mage_Customer_Block</class> </customer> </blocks> <models> <customer> <class>Mage_Customer_Model</class> <resourceModel>customer_resource</resourceModel> </customer> <customer_resource> <class>Mage_Customer_Model_Resource</class> <deprecatedNode>customer_mysql4</deprecatedNode> <entities> <entity> <table>customer_entity</table> </entity> <address_entity> <table>customer_address_entity</table> </address_entity> <value_prefix> <table>customer_entity</table> </value_prefix> <customer_group> <table>customer_group</table> </customer_group> <eav_attribute> <table>customer_eav_attribute</table> </eav_attribute> <eav_attribute_website> <table>customer_eav_attribute_website</table> </eav_attribute_website> <form_attribute> <table>customer_form_attribute</table> </form_attribute> </entities> </customer_resource> </models> <resources> <customer_setup> <setup> <module>Mage_Customer</module> <class>Mage_Customer_Model_Resource_Setup</class> </setup> </customer_setup> </resources> <template> <email> <customer_create_account_email_template translate="label" module="customer"> <label>New account</label> <file>account_new.html</file> <type>html</type> </customer_create_account_email_template> <customer_create_account_email_confirmation_template translate="label" module="customer"> <label>New account confirmation key</label> <file>account_new_confirmation.html</file> <type>html</type> </customer_create_account_email_confirmation_template> <customer_create_account_email_confirmed_template translate="label" module="customer"> <label>New account confirmed</label> <file>account_new_confirmed.html</file> <type>html</type> </customer_create_account_email_confirmed_template> <customer_password_forgot_email_template translate="label" module="customer"> <label>Forgot Password</label> <file>account_password_reset_confirmation.html</file> <type>html</type> </customer_password_forgot_email_template> <customer_password_remind_email_template translate="label" module="customer"> <label>Remind Password</label> <file>password_new.html</file> <type>html</type> </customer_password_remind_email_template> </email> </template> <events> <customer_address_save_before> <observers> <customer_address_before_save_viv_observer> <class>customer/observer</class> <method>beforeAddressSave</method> </customer_address_before_save_viv_observer> </observers> </customer_address_save_before> <customer_address_save_after> <observers> <customer_addres_after_save_viv_observer> <class>customer/observer</class> <method>afterAddressSave</method> </customer_addres_after_save_viv_observer> </observers> </customer_address_save_after> </events> </global>
part 2:
<adminhtml> <translate> <modules> <Mage_Customer> <files> <default>Mage_Customer.csv</default> </files> </Mage_Customer> </modules> </translate> </adminhtml> <frontend> <secure_url> <customer>/customer/</customer> </secure_url> <events> <controller_action_layout_load_before> <observers> <customer_is_logged_in_observer> <class>customer/observer</class> <method>beforeLoadLayout</method> </customer_is_logged_in_observer> </observers> </controller_action_layout_load_before> <sales_model_service_quote_submit_after> <observers> <restore_customer_group_id> <class>customer/observer</class> <method>quoteSubmitAfter</method> </restore_customer_group_id> </observers> </sales_model_service_quote_submit_after> </events> <routers> <customer> <use>standard</use> <args> <module>Mage_Customer</module> <frontName>customer</frontName> </args> </customer> </routers> <translate> <modules> <Mage_Customer> <files> <default>Mage_Customer.csv</default> </files> </Mage_Customer> </modules> </translate> <layout> <updates> <customer module="Mage_Customer"> <file>customer.xml</file> </customer> </updates> </layout> </frontend> <default> <customer> <account_share> <scope>1</scope> </account_share> <create_account> <confirm>0</confirm> <default_group>1</default_group> <tax_calculation_address_type>billing</tax_calculation_address_type> <email_domain>example.com</email_domain> <email_identity>general</email_identity> <email_template>customer_create_account_email_template</email_template> <email_confirmation_template>customer_create_account_email_confirmation_template</email_confirmation_template> <email_confirmed_template>customer_create_account_email_confirmed_template</email_confirmed_template> <vat_frontend_visibility>0</vat_frontend_visibility> </create_account> <default> <group>1</group> </default> <password> <forgot_email_identity>support</forgot_email_identity> <forgot_email_template>customer_password_forgot_email_template</forgot_email_template> <remind_email_template>customer_password_remind_email_template</remind_email_template> <reset_link_expiration_period>1</reset_link_expiration_period> <require_admin_user_to_change_user_password>1</require_admin_user_to_change_user_password> </password> <address> <street_lines>2</street_lines> <prefix_show/> <prefix_options/> <middlename_show>1</middlename_show> <suffix_show/> <suffix_options/> <dob_show/> <gender_show/> </address> <startup> <redirect_dashboard>1</redirect_dashboard> </startup> <address_templates> <text>{{depend prefix}}{{var prefix}} {{/depend}}{{var firstname}} {{depend middlename}}{{var middlename}} {{/depend}}{{var lastname}}{{depend suffix}} {{var suffix}}{{/depend}} {{depend company}}{{var company}}{{/depend}} {{if street1}}{{var street1}} {{/if}} {{depend street2}}{{var street2}}{{/depend}} {{depend street3}}{{var street3}}{{/depend}} {{depend street4}}{{var street4}}{{/depend}} {{if city}}{{var city}}, {{/if}}{{if region}}{{var region}}, {{/if}}{{if postcode}}{{var postcode}}{{/if}} {{var country}} T: {{var telephone}} {{depend fax}}F: {{var fax}}{{/depend}} {{depend vat_id}}VAT: {{var vat_id}}{{/depend}}</text> <oneline>{{depend prefix}}{{var prefix}} {{/depend}}{{var firstname}} {{depend middlename}}{{var middlename}} {{/depend}}{{var lastname}}{{depend suffix}} {{var suffix}}{{/depend}}, {{var street}}, {{var city}}, {{var region}} {{var postcode}}, {{var country}}</oneline> <html><![CDATA[{{depend prefix}}{{var prefix}} {{/depend}}{{var firstname}} {{depend middlename}}{{var middlename}} {{/depend}}{{var lastname}}{{depend suffix}} {{var suffix}}{{/depend}}<br/> {{depend company}}{{var company}}<br />{{/depend}} {{if street1}}{{var street1}}<br />{{/if}} {{depend street2}}{{var street2}}<br />{{/depend}} {{depend street3}}{{var street3}}<br />{{/depend}} {{depend street4}}{{var street4}}<br />{{/depend}} {{if city}}{{var city}}, {{/if}}{{if region}}{{var region}}, {{/if}}{{if postcode}}{{var postcode}}{{/if}}<br/> {{var country}}<br/> {{depend telephone}}T: {{var telephone}}{{/depend}} {{depend fax}}<br/>F: {{var fax}}{{/depend}} {{depend vat_id}}<br/>VAT: {{var vat_id}}{{/depend}}]]></html> <pdf><![CDATA[{{depend prefix}}{{var prefix}} {{/depend}}{{var firstname}} {{depend middlename}}{{var middlename}} {{/depend}}{{var lastname}}{{depend suffix}} {{var suffix}}{{/depend}}| {{depend company}}{{var company}}|{{/depend}} {{if street1}}{{var street1}} {{/if}} {{depend street2}}{{var street2}}|{{/depend}} {{depend street3}}{{var street3}}|{{/depend}} {{depend street4}}{{var street4}}|{{/depend}} {{if city}}{{var city}},|{{/if}} {{if region}}{{var region}}, {{/if}}{{if postcode}}{{var postcode}}{{/if}}| {{var country}}| {{depend telephone}}T: {{var telephone}}{{/depend}}| {{depend fax}}<br/>F: {{var fax}}{{/depend}}| {{depend vat_id}}<br/>VAT: {{var vat_id}}{{/depend}}|]]></pdf> <js_template><![CDATA[#{prefix} #{firstname} #{middlename} #{lastname} #{suffix}<br/>#{company}<br/>#{street0}<br/>#{street1}<br/>#{street2}<br/>#{street3}<br/>#{city}, #{region}, #{postcode}<br/>#{country_id}<br/>T: #{telephone}<br/>F: #{fax}<br/>VAT: #{vat_id}]]></js_template> </address_templates> </customer> </default> </config>
Hi @billyChanVG
I found error in your layout.xml please see the opening and closing tag of
<customer_training_index > ...... ...... </customer_training> // Error Please use </customer_training_index> to close