Jump to content
allcho

Как в контролере получить modul_id?

Recommended Posts

В моем контролереле модуля, метод индекс принимает поле модуля $setting

class ControllerExtensionModuleMy extends Controller {
    public function index($setting) {

в $seting прихjlит массив данных с поля $seting моего модуля из базы  oc_modul

 

А как получить modul_id этотой записи в базе?

Edited by allcho

Share this post


Link to post
Share on other sites

никак

 

Share this post


Link to post
Share on other sites
3 minutes ago, chukcha said:

никак

 

Жаль... придется делать костыль чтобы в $setting записывалось и $modul_id

Share this post


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

Жаль... придется делать костыль чтобы в $setting записывалось и $modul_id

Подумайте как это сделать без костылей

 

Share this post


Link to post
Share on other sites

Почему поиском не пользуетесь? На первой странице нашёл запросом "Как в контролере получить modul_id?"

Спойлер

image.thumb.png.09662265d7210d5950105b335308e28b.png

 

Share this post


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

На первой странице нашёл запросом "Как в контролере получить modul_id?"

там не по теме :(

 

Share this post


Link to post
Share on other sites
2 часа назад, chukcha сказал:

там не по теме :(

 

Почему? Сохраняешь id при сохранении (создании) модуля и выводишь в setting на фронте.

$module_id = $this->db->getLastId(); я имею ввиду в админке в контроллере модуля прописывать.

Share this post


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

Админка и фронт?

При редактировании или создании сохраняешь (Админка). Потом в catalog в setting получаешь (фронт).
 

55 минут назад, chukcha сказал:

Вот же нормальное решение

Нормальное. Но не для модулей на продажу.

Share this post


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

Нормальное. Но не для модулей на продажу.

 

Т.е. костыль в виде сохранения id модуля второй раз - это решение для продажи?

Share this post


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

 

Т.е. костыль в виде сохранения id модуля второй раз - это решение для продажи?

Вы свой костыль раз 5 установите (примените в нескольких модулей).

Share this post


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

Вы свой костыль раз 5 установите (примените в нескольких модулей).

catalog/model/extension/module.php

 

Сколько раз?

Share this post


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

catalog/model/extension/module.php

 

Сколько раз?

до

Спойлер

class ModelExtensionModule extends Model {
    public function getModule($module_id) {
        $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "module WHERE module_id = '" . (int)$module_id . "'");
        
        if ($query->row) {
            return json_decode($query->row['setting'], true);
        } else {
            return array();    
        }
    }        
}

после

Спойлер

class ModelExtensionModule extends Model {
    public function getModule($module_id) {
        $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "module WHERE module_id = '" . (int)$module_id . "'");
        
        if ($query->row) {
            
            
            
            
            
            $settings = json_decode($query->row['setting'], true);
            $settings['module_id'] = $module_id;
            return $settings;
        
            $settings['module_id'] = $module_id;
            return $settings;
        
            $settings['module_id'] = $module_id;
            return $settings;
        
            $settings['module_id'] = $module_id;
            return $settings;
        
            $settings['module_id'] = $module_id;
            return $settings;
        
        } else {
            return array();    
        }
    }        
}

 

Share this post


Link to post
Share on other sites

И что?
 

Share this post


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

И что?
 

Через плечо.

Share this post


Link to post
Share on other sites

После первой замены уже не будет вхождения строки:

return json_decode($query->row['setting'], true);

Поэтому повторно правка не применится. 

  • +1 1

Share this post


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

Поэтому повторно правка не применится. 

Хорошо, а если, кто-нибудь другой в своём модуле назвал переменную по другому или заменил json_decode($query->row['setting'], true); по другому?

Share this post


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

Хорошо, а если, кто-нибудь другой в своём модуле назвал переменную по другому или заменил json_decode($query->row['setting'], true); по другому?

А если кто-то вообще пол движка переписал.

Это всё домыслы.  Никогда не будет всеобщей тотальной совместимости. Если правки в одном участке кода, то могут быть конфликты.

Правка вполне безобидная и логчная. Туда только skip добавить и вполне приемлимо будет.

А если придираться, то можно и не такого накопать. :)

 

  • +1 2

Share this post


Link to post
Share on other sites
if ($query->row) {
	if (isset($query->row['code']) && $query->row['code'] == 'module_name')  {
		$query->row['setting'] = preg_replace('/}$/', ',"module_id":"' . (int)$module_id . '"}', $query->row['setting']);
	}
...

Как-то так?

  • +1 1

Share this post


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

Как-то так?

А не сильно изощрённо? :)

Share this post


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

А не сильно изощрённо? :)

как по мне, то не очень :)

  • +1 1

Share this post


Link to post
Share on other sites
5 hours ago, buslikdrev said:

При редактировании или создании сохраняешь (Админка). Потом в catalog в setting получаешь (фронт).
 

Нормальное. Но не для модулей на продажу.

Это мне для фронта надо что бы получить данные со связной таблицы.

То что Вы давали мне в другой теме про getLastid это я использовал в  бэке чтобы сохранить данные в связной таблицы .

 

Я просто пока не ореинтируюсь в опенкарет и документации внятной нигде не нашел

 

Edited by allcho

Share this post


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

Я просто пока не ореинтируюсь в опенкарет и документации внятной нигде не нашел

 

У него ее и нет)) Он очень простой. 

 

Share this post


Link to post
Share on other sites
2 часа назад, allcho сказал:

То что Вы давали мне в другой теме про getLastid это я использовал в  бэке чтобы сохранить данные в связной таблицы .

Я вам не давал в другой.

Вот ещё вариант.

Спойлер

<?xml version="1.0" encoding="utf-8"?>
<modification>
  <name>module_id</name>
  <code>534534354453435</code>
  <version>1.0</version>
  <author>module_id</author>
  <link></link>
  <file path="catalog/controller/common/column_*.php|catalog/controller/common/content_*.php">
	<operation error="skip">
      <search>
        <![CDATA[$setting_info = $this->model_extension_module->getModule]]>
      </search>
      <add position="after">
        <![CDATA[				$setting_info['module_id'] = $part[1];]]>
      </add>
    </operation>
  </file>
</modification>

 

 

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.