2015-07-28 2 views
0

У меня естьТонкий Twig не делает из идентификаторы

{% if auth.renderFriendShip("{{auth.id}}", "{{user.id}}", 'isThereFriendship') == 0 %} 

в моем файле представления. Он должен меняться {{auth.id}} и {{user.id}}, но это не так. Когда я запускаю «var_dump» в {{user.id}} в моей php-модели (где эта функция приводит) ... она просто выводит {{user.id}}.

Вот соответствующий код в моем файле представления ...

{% if auth.renderFriendShip("{{auth.id}}", "{{user.id}}", 'isThereFriendship') == 0 %} 
    <button class="friendBtn add" data-uid="{{user.id}}" data-type="addFriend">Friend</button> 
    <button class="request_pending hidden" disabled>Request Pending</button> 
{% else %} 
    <button class="friendBtn unfriend" data-uid="{{user.id}}" data-type="unfriend">Unfriend</button> 
    <button class="friendBtn add hidden" data-uid="{{user.id}}" data-type="addFriend">Add as friend</button>       
    <button class="request_pending hidden" disabled>Request Pending</button> 
{% endif %} 

и моя модель пользователя ...

public function renderFriendShip($user_one, $user_two, $type) { 
    if(!empty($user_one) || !empty($user_two) || !empty($type)) { 
     switch($type) { 
      case 'isThereRequestPending': 
       $matchThese = ['user_one' => "$user_one", 'user_two' => "$user_two", 'friendship_official' => '0']; 
       $orMatchThese = ['user_one' => "$user_two", 'user_two' => "$user_one", 'friendship_official' => '0']; 

       $query = $this->friendsList() 
        ->where($matchThese) 
        ->orWhere($orMatchThese) 
        ->get() 
        ->count(); 

       return $query; 
       break; 
      case 'isThereFriendship': 
       $q = $this->friendsList() 
        ->where(function($query) use ($user_one, $user_two) { 
         return $query->where(['user_one' => $user_one, 'user_two' => $user_two, 'friendship_official' => '1']); 
        }) 
        ->orWhere(function($query) use ($user_one, $user_two) { 
         return $query->where(['user_one' => $user_two, 'user_two' => $user_one, 'friendship_official' => '1']); 
        }) 
        ->get() 
        ->count(); 

       break; 
     } 
     return var_dump($user_two); 
    } else { 
     return "Failed"; 
    } 
} 

Благодарим Вас за любые возможные советы вы можете дать мне. Я уже много часов ищу, и я не нашел решения.

+0

Похоже, что вы забыли вернуть $ Q в случае «isThereFriendship» – Jacques

+0

@Jacques я добавил, что и переехал мой уаг дамп (где обратный запрос должен быть ... его сейчас «возвращение var_dump ($ д); "). Я все еще получаю int (0) для моего возвращения, когда действительно есть правильная информация как в db, так и в моем коде. «{{Auth.id}}» и «{{user.id}}», вероятно, все еще не изменяются –

+0

Извините за задержку, но если var dump ничего не возвращает, вы уверены, что действительно выполняете запрос , Я не вижу, что запрос действительно используется, просто задан в вашем коде. Если вы не выполняете запрос, он не собирается извлекать из базы данных. – Jacques

ответ

0

Проблема здесь проста: в вашем файле twig вы ссылаетесь на auth.id и user.id, используя фигурные скобки. Попробуйте использовать:

{% if auth.renderFriendShip(auth.id, user.id, 'isThereFriendship') == 0 %} 

От documentation:

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

+0

Я действительно понял это сам через некоторое время ... спасибо, хотя за то, что вы опубликовали это! Отмечено как ответ –

 Смежные вопросы

  • Нет связанных вопросов^_^