Pok4
Registered
Здравейте,
Имам проблем и реших да постна и тук.
Значи направих така, че в системата да се работи с външни lang файлове, а не да се пишат в самия екстеншън. До тук добре, всичко си работи, но когато достъпя ajax метода в някой контролер гърмят грешки от undefined array key...
Пробвах така:
$array[$value] ?? '' (понеже може в php 8), но пак не става, поне крие няколко грешки, но други не иска.
С @ отпред работи, грешките се крият и аякс заявките се инициират добре и без проблеми...
Като достъпя екстеншъна така:
излизат следните грешки:
На тези редове имам:
Искам пак да кажа, че всичко си работи във фронт частта, просто аякс заявките не се инициират, тъй като има грешки и те се бъркат със самите аякс заявки, output-a не е чист и не може да изведе коректно връщането на respons-a...
Аякс метода на екстеншъна е този:
Проблема мисля, че е в самия лоудинг на екстеншъните:
В екстеншъна имам папка lang/ с езиците, които се поддържат ru.php,en.php,bg.php и es.php
Примерно съдържание на bg.php:
Някой има ли съвет, как да направя всичко така, че да няма грешки в аякс метода ? Искам да е нормален начин без @, error_reporting(0) или ?? ''...
Екстеншъните ползват ajax() метода и се инициират вътре, но грешката се вади само когато е достъпен директно ajax url-a (горе съм го дал), но го давам пак:
url: "/ajax/ext/pok4/calladmin",
Като го достъпя и lang дефинициите все едно не са дефинирани в масива...
От 2 дни се мъча по-малко да го оправя по-нормален начин, но не мога... Ако някой иска повече код и обяснения, нека пише...
Имам проблем и реших да постна и тук.
Значи направих така, че в системата да се работи с външни lang файлове, а не да се пишат в самия екстеншън. До тук добре, всичко си работи, но когато достъпя ajax метода в някой контролер гърмят грешки от undefined array key...
Пробвах така:
$array[$value] ?? '' (понеже може в php 8), но пак не става, поне крие няколко грешки, но други не иска.
С @ отпред работи, грешките се крият и аякс заявките се инициират добре и без проблеми...
Като достъпя екстеншъна така:
излизат следните грешки:
PHP:
[phpBB Debug] PHP Warning: in file C:/xampp2/htdocs/ext/pok4/calladmin/ext.php on line 67: Undefined array key "ext_calladmin_nick"
[phpBB Debug] PHP Warning: in file C:/xampp2/htdocs/ext/pok4/calladmin/ext.php on line 68: Undefined array key "ext_calladmin_report"
[phpBB Debug] PHP Warning: in file C:/xampp2/htdocs/ext/pok4/calladmin/ext.php on line 69: Undefined array key "ext_calladmin_date"
[phpBB Debug] PHP Warning: in file C:/xampp2/htdocs/ext/pok4/calladmin/ext.php on line 70: Undefined array key "ext_calladmin_server"
[phpBB Debug] PHP Warning: in file C:/xampp2/htdocs/ext/pok4/calladmin/ext.php on line 90: Undefined array key "ext_call_admin_reload"
На тези редове имам:
PHP:
<td>".$this->lang['ext_calladmin_nick']."</td>
<td>".$this->lang['ext_calladmin_report']."</td>
<td>".$this->lang['ext_calladmin_date']."</td>
<td>".$this->lang['ext_calladmin_server']."</td>
Искам пак да кажа, че всичко си работи във фронт частта, просто аякс заявките не се инициират, тъй като има грешки и те се бъркат със самите аякс заявки, output-a не е чист и не може да изведе коректно връщането на respons-a...
Аякс метода на екстеншъна е този:
PHP:
public function ajax() {
if(is_ajax()) {
$results = [];//globalize, holds every data from while cycle
//get last info via ajax
$get=$this->db->query("SELECT * FROM `".$this->cs16calladmin_db."`.`".$this->cs16calladmin_table."` order by id DESC LIMIT ".$this->call_admin_limit."");
if($get->rowCount() > 0) {
while ($row = $get->fetch(PDO::FETCH_ASSOC)) {
$username = $row['nick']; //caller
$report = $row['report'];
$date = $row['date'];
$time = $row['time'];
$server = $row['server'];
$results[] = ['username'=>$username, 'report'=>$report,'date'=>$date."-".$time,'server'=>$server];
}
echo json_encode($results, JSON_PRETTY_PRINT); //print array with results
}
}
}
Проблема мисля, че е в самия лоудинг на екстеншъните:
PHP:
function load_extensions() {
global $dbh, $container, $dispatcher,$lang_sys,$ext_language;
$checker = $dbh->query('SELECT ext_name FROM '.$_SERVER['DB_PREFIX'].'ext WHERE ext_active=1');
if ($checker->rowCount() > 0) {
while ($row=$checker->fetch(PDO::FETCH_ASSOC)) {
$ext_name = $row['ext_name'];
if (file_exists(__DIR__.'/../ext/'.$ext_name.'/ext.php')) {
//multilanguage system for extensions
if (file_exists(__DIR__.'/../ext/'.$ext_name.'/lang/'.get_current_language().'.php')) {
require_once __DIR__.'/../ext/'.$ext_name.'/lang/'.get_current_language().'.php';
$lang_sys = array_merge($lang_sys,$ext_language);
}
//core file for the extension
require_once __DIR__.'/../ext/'.$ext_name.'/ext.php';
}
}
}
}
В екстеншъна имам папка lang/ с езиците, които се поддържат ru.php,en.php,bg.php и es.php
Примерно съдържание на bg.php:
PHP:
<?php
$ext_language = [
'ext_call_admin_reload'=>'Обнови',
'ext_calladmin_nick'=>'Никнейм',
'ext_calladmin_report'=>'Репорт',
'ext_calladmin_date'=>'Дата',
'ext_calladmin_server'=>'Сървър',
];
Някой има ли съвет, как да направя всичко така, че да няма грешки в аякс метода ? Искам да е нормален начин без @, error_reporting(0) или ?? ''...
Екстеншъните ползват ajax() метода и се инициират вътре, но грешката се вади само когато е достъпен директно ajax url-a (горе съм го дал), но го давам пак:
url: "/ajax/ext/pok4/calladmin",
Като го достъпя и lang дефинициите все едно не са дефинирани в масива...
От 2 дни се мъча по-малко да го оправя по-нормален начин, но не мога... Ако някой иска повече код и обяснения, нека пише...