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