непонятный notice

Главные вкладки

Аватар пользователя zlodiak zlodiak 28 мая 2013 в 19:44

помогите пожалуйста решить проблему

в файле node.tpl.php я через include('width.php') делаю проверку переменной таким кодом


<?php 
    
//krumo($node); 
    
    
if(($field_width[0]['value'] == 1) or 
        (
$field_width1[0]['value'] == 1) or
        (
$field_width2[0]['value'] == 1) or
        (
$field_width3[0]['value'] == 1) or
        (
$field_width4[0]['value'] == 1) or
        (
$field_width5[0]['value'] == 1) or
        (
$field_width6[0]['value'] == 1)){
        echo(
'<script>
            jQuery("#content").css("width", "100%");
            jQuery("#content .field-item > table").css("width", "100%");
        </script>'
);
    }
    else{

    }

?>

обычно из всех перечисленных переменных на странице существует только одна. проблема в том, что друпал выводит примерно такое сообщение об некритической ошибке
«Notice: Undefined variable: field_width1 в функции include() (строка 5 в файле /usr/home/server1/domains/bla.ru/public_html/sites/all/themes/kibmak/width.php).
Notice: Undefined variable: field_width2 в функции include() (строка 6 в файле /usr/home/server1/domains/bla.ru/public_html/sites/all/themes/kibmak/width.php).
Notice: Undefined variable: field_width3 в функции include() (строка 7 в файле /usr/home/server1/domains/bla.ru/public_html/sites/all/themes/kibmak/width.php).
Notice: Undefined variable: field_width4 в функции include() (строка 8 в файле /usr/home/server1/domains/bla.ru/public_html/sites/all/themes/kibmak/width.php).
Notice: Undefined variable: field_width5 в функции include() (строка 9 в файле /usr/home/server1/domains/bla.ru/public_html/sites/all/themes/kibmak/width.php).
Notice: Undefined variable: field_width6 в функции include() (строка 10 в файле /usr/home/server1/domains/bla.ru/public_html/sites/all/themes/kibmak/width.php).»

подскажите пожалуйста как от него избавиться

Комментарии

Аватар пользователя tascom tascom 28 мая 2013 в 20:12

а что именно не понятно? переменная не существует
отключите вывод ошибок на экран по адресу admin/config/development/logging

Аватар пользователя Niklan Niklan 28 мая 2013 в 20:17

WHAT THE FUCK ARE YOU DOING?

Во-первых, ема-е, это ошибка PHP а не друпала, в котрой аж 6 раз ЧЕТКО написано, что переменная не существует.
Во-вторых

"zlodiak" wrote:
all/themes/kibmak/width.php

Это что вообще за нах?

<?phpecho('<script>
            jQuery("#content").css("width", "100%");
            jQuery("#content .field-item > table").css("width", "100%");
        </script>');?>

А это... ну ппц кароче.

Аватар пользователя zlodiak zlodiak 28 мая 2013 в 20:54

ребят, ну чего вы ругаетесь

так $field_width['und'][0]['value'] эта переменная не видна. только так $field_width[0]['value']

отключить вывод ошибок это для меня не решение(

ошибка скорее пхп, но на чистом пхп этот код никаких сообщений не вызывал бы. я же не использую переменную, а просто проверяю

Аватар пользователя tascom tascom 28 мая 2013 в 21:13

"zlodiak" wrote:
ошибка скорее пхп, но на чистом пхп этот код никаких сообщений не вызывал бы. я же не использую переменную, а просто проверяю

к сожалению друпал не видит разницы в использовании переменной и ее проверке. попробуйте использовать чистый пхп вместо друпала

Аватар пользователя serega111 serega111 29 мая 2013 в 16:47

Еще один кадр. Как делать правильно не скажу, зачем мне конкуренты ))

<?php
if(($field_width[0]['value'] == 1) or
($field_width1[0]['value'] == 1) or
($field_width2[0]['value'] == 1) or
($field_width3[0]['value'] == 1) or
($field_width4[0]['value'] == 1) or
($field_width5[0]['value'] == 1) or
($field_width6[0]['value'] == 1))
?>
замените на
<?php
if((isset($field_width[0]['value']) && $field_width[0]['value'] == 1) or
(isset($field_width1[0]['value']) && $field_width1[0]['value'] == 1) or
(isset($field_width2[0]['value']) && $field_width2[0]['value'] == 1) or
(isset($field_width3[0]['value']) && $field_width3[0]['value'] == 1) or
(isset($field_width4[0]['value']) && $field_width4[0]['value'] == 1) or
(isset($field_width5[0]['value']) && $field_width5[0]['value'] == 1) or
(isset($field_width6[0]['value']) && $field_width6[0]['value'] == 1))
?>

Ну так и быть...
Никогда не используйте в темах .php файл, только .tpl.php
Никогда не подключайте в шаблонах файлы вот таким вот способом
<?php
include('width.php');
?>
Есть масса способов добавить то, что вам нужно в этот файл средстваим drupal. Лучше всего через hook_preprocess_node
Никогда не выводите js код в шаблоне. У drupal есть удобное api для работы с js.
За такое вас следующий разработчик будет долго и упорно ругать