TrogvarDim

[Решено] Проблема с созданием нового контроллера

Рекомендуемые сообщения

TrogvarDim    1

Пытаюсь сделать новый контроллер.

Соответственно создал файл \controller\account\fastorder.php

<?php
class ControllerAccountFastorder extends Controller {
private $error = array();

  public function index() {
 $this->language->load('account/fastorder');
 $this->document->setTitle($this->language->get('heading_title'));

 if (($this->request->server['REQUEST_METHOD'] == 'POST') /*&& $this->validate()*/ &&
  isset($this->request->post['customer_name']) && ($this->request->post['customer_name'] !== "") &&
  isset($this->request->post['customer_phone']) && ($this->request->post['customer_phone'] !== "")) {
$mail = new Mail();
$mail->protocol = $this->config->get('config_mail_protocol');
$mail->parameter = $this->config->get('config_mail_parameter');
$mail->hostname = $this->config->get('config_smtp_host');
$mail->username = $this->config->get('config_smtp_username');
$mail->password = $this->config->get('config_smtp_password');
$mail->port = $this->config->get('config_smtp_port');
$mail->timeout = $this->config->get('config_smtp_timeout');  
$mail->setTo($this->config->get('config_email'));
$mail->setFrom($this->config->get('config_email'));
$mail->setSender($this->config->get('config_name'));
	$mail->setSubject(html_entity_decode($this->language->get('email_subject'), ENT_QUOTES, 'UTF-8'));
$mail->setText(strip_tags(html_entity_decode($this->request->post['customer_name'], ENT_QUOTES, 'UTF-8')));
$mail->send();
 } else {
  echo "BAD";
 }
}
}
?>

Однако при вызове я получаю ошибку:

Class 'Controller' not found in /var/www/user270/data/www/diolika.ru/catalog/controller/account/fastorder.php on line 2

Похоже я что-то не понимаю в алгоритмах линковки PHP. Подскажите куда копать, плиз

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
afwollis    1 097

вызывать (обращаться к файлу) надо через route

index.php?route=account/fastorder

а вы, похоже, напрямую путь к файлу в ссылке/action формы указали.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
TrogvarDim    1

Спасибо, большое. Помогло.

А не подскажете, где можно почитать/посмотреть (исходник или мануал) как работает этот механизм вызова. Хотелось бы для себя разобраться, почему в вызове через route класс Controller доступен, а напрямую нет

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
afwollis    1 097

при обращении через "index.php?route" подключаются все необходимые файлы (классы, необходимые для работы), в то время, как при прямом обращении к файлу - нет.

вам бы ознакомиться с азами:

php :: include / require_once

php :: class

php :: OOP / ООП

MVC / MVC(L)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
TrogvarDim    1

Спасибо.

С азами MVC и ООП мне наверно уже знакомиться поздно :), как никак уже 11 лет профессиональный программист (правда далеко не Web). А вот с азами php познакомиться действительно пора

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
freelancer    1 410

11 лет без ООП ? на чем вы пишите? asm? lisp?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
TrogvarDim    1

Поздно знакомиться в том смысле, что с ООП и MVC я уже как 11 лет на короткой ноге :) Пишу на всех вариациях языка Си (от классики до шарпа) и Smalltalk

А вот с php судьба свела впервые, и из-за недостатка времени и несерьезности проекта приходится кодить вслепую, без предварительной теоретической подготовки

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу