Jump to content

Recommended Posts

Добрый вечер, есть элемент onclick="func('dogs', '735');

Есть контроллер information/info...

 

с функцией dogs, cats и тд...

 

Первый параметр в onclick передает тип который нужно отобразить в данном случае dogs, второй id. Вопрос заключается в том как правильно поступить для вызова определенной функции в контроллере связаной с типом данных (dogs, cat и тд.).  Мои мысли в функции index information/info ловить $this->request->post['type'] и в зависимости от него перенаправлять на одноименную функцию в том же контроллере, но как ?

 

Share this post


Link to post
Share on other sites

Начнём с того, что тут ООП MVC, соответственно у контроллера нет функций, есть методы. Далее, а в чём собственно проблема?)

Share this post


Link to post
Share on other sites
35 минут назад, iPython сказал:

Начнём с того, что тут ООП MVC, соответственно у контроллера нет функций, есть методы.

Тут - это где?  Я что-то пропустил, и в php теперь нет функций? Или неведомая сила не дает их использовать в опенкарте?
Открываем \catalog\controller\common\cart.php, и что мы видим :o
 

public function index() {

.....
}
	public function info() {
		$this->response->setOutput($this->index());
	}

По поводу вопроса топика - не совсем понятно, в чем проблема. Хорошо бы больше картинок :)

Edited by Shureg

Share this post


Link to post
Share on other sites

Вопрос как вызывать ФУНКЦИЮ внутри контроллера...

По условию типа if post type == dogs выполнить public function dogs()  этого же контроллера 

Share this post


Link to post
Share on other sites
3 минуты назад, zomo сказал:

Вопрос как вызывать ФУНКЦИЮ внутри контроллера...

По условию типа if post type == dogs выполнить public function dogs()  этого же контроллера 

Генерируйте ссылки вида:
route=information/info/dogs
route=information/info/cats
Последний параметр в route (Если разделить по /) и будет функция контроллера

  • +1 1

Share this post


Link to post
Share on other sites
class ControllerInformationInfo extends Controller {
    public function index() {
        if($this->request->post['type'] === 'cats') {
            $this->cats();
        } elseif($this->request->post['type'] === 'dogs') {
            $this->dogs();
        }
    }
    
    private function cats() {
        
    }
    
    private function dogs() {
        
    }
}

 

  • +1 2

Share this post


Link to post
Share on other sites
Только что, Shureg сказал:

Тут - это где?  Я что-то пропустил, и в php теперь нет функций? Или неведомая сила не дает их использовать в опенкарте?
Открываем \catalog\controller\common\cart.php, и что мы видим :o
 


public function index() {

.....
}
	public function info() {
		$this->response->setOutput($this->index());
	}

По поводу вопроса топика - не совсем понятно, в чем проблема. Хорошо бы больше картинок :)

 

Действительно, и что же мы там видим?

Share this post


Link to post
Share on other sites
3 минуты назад, iPython сказал:

Действительно, и что же мы там видим?

Функции мы там видим. Любителям умничать - читать учебник. Например
https://www.php.net/manual/ru/language.oop5.basic.php
 

Цитата

Класс может содержать собственные константы, переменные (называемые свойствами) и функции (называемые методами).

Или хотя бы вики
https://ru.wikipedia.org/wiki/Метод_(программирование)

Share this post


Link to post
Share on other sites
Только что, Shureg сказал:

Функции мы там видим. Любителям умничать - читать учебник. Например
https://www.php.net/manual/ru/language.oop5.basic.php
 

Или хотя бы вики
https://ru.wikipedia.org/wiki/Метод_(программирование)

 

Так а что же я ранее писал? Вот как раз и займитесь чтивом.. Возможно сможете различать где метод класса, а где функция.

Share this post


Link to post
Share on other sites
5 минут назад, iPython сказал:

Возможно сможете различать где метод класса, а где функция.

Знаете, есть такое классическое произведение. Там герой очень удивился, узнав, что всю жизнь говорил прозой.
Так вот, вы тот же Журден, только упертый: 
"проза (функции) - это одно,  а что я говорю (методы) - совсем другое!"

Share this post


Link to post
Share on other sites
Только что, Shureg сказал:

Знаете, есть такое классическое произведение. Там герой очень удивился, узнав, что всю жизнь говорил прозой.
Так вот, вы тот же Журден, только упертый: 
"проза (функции) - это одно,  а что я говорю (методы) - совсем другое!"

 

Автор учится программированию, как Вы думаете, не стоит ли его сразу направить на правильный путь? Если Вы не видите разницы или же специально не желаете разделать понятия, это Ваши проблемы, от этого и недопонимания. В своём кругу Вы метод можете называть как угодно, но не вводите в заблуждение и не учите дурному остальных.

Share this post


Link to post
Share on other sites
4 минуты назад, iPython сказал:

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

А чем мой путь неправильный? Вы считаете, что читать ман по php - это плохой путь?

 

5 минут назад, iPython сказал:

В своём кругу Вы метод можете называть как угодно, но не вводите в заблуждение и не учите дурному остальных.


То есть, круг читающих маны - не ваш круг. Ладно, не буду спорить. Каждому свое.

Share this post


Link to post
Share on other sites

@Shureg

 

Цитата

Ме́тод в объектно-ориентированном программировании — это функция или процедура, принадлежащая какому-то классу или объекту.

 

Процедура??

Share this post


Link to post
Share on other sites
5 минут назад, chukcha сказал:

Процедура??

Процедура от функции отличается тем, что ничего не возвращает. Видимо, в каких то языках еще уцелела. (Хотя почему в каких-то, в паскале точно есть). Ну, наверное можно как метод представить... 

Share this post


Link to post
Share on other sites

как это не возвращает  процедура (параметр переменная)
Это не важно

в php нет понятия процедура
есть функция
но для ООП - это метод, что собственно вам и сказали

а назвать можно как угодно хоть так: proc option (main)




 

Share this post


Link to post
Share on other sites
44 минуты назад, chukcha сказал:

как это не возвращает  процедура (параметр переменная)
Это не важно

в php нет понятия процедура
есть функция
но для ООП - это метод, что собственно вам и сказали

а назвать можно как угодно хоть так: proc option (main)

А вы ссылки-то смортели? Ваша "процедура" - она из вики, и не про php ни разу, а вообще, для любого языка. И там, где она есть, она действительно ничего не возвращает, этим и отличаясь от функции.
В ООП метод - это функция. Что, собственно, вам скажет любой учебник или описание, в том числе, для php. 
Тот факт, что функцию привязали к объекту, не делает  ее "не функцией". Поиск по "method function difference php"  в гугле очень поможет.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.