Ostatnie wiadomości

Strony: 1 [2] 3 4 ... 10
11
Pomoc / Symfony 4.4, FOSUserBundle 2.2.x-dev i problem z encjami User oraz Group
« Ostatnia wiadomość wysłana przez savage.mephisto dnia Lutego 07, 2020, 01:57:34 »
Witam.
Dokonuję migracji z wersji 3.4 frameworka na wersję 4.4 i zaciąłem się na małej popierdółce.
Byłem zmuszony nieco przerobić klasę User i Group w customowym bundlu, którego używam do zarządzania userami, jednak podczas walidacji (php bin/console doctrine:schema:validate) wyskakuje błąd z interfejsami w tle:
Cytuj
Compile Error: Declaration of App\UserBundle\Entity\User::addGroup(App\UserBundle\Entity\Group $group): App\UserBundle\Entity\User must be compatible with FOS\UserBundle\Model\User::addGroup(FOS\UserBundle\Model\GroupInterface $group)

Pierwotnie w encji User miałem zapis:
/**
 * User
 *
 * @ORM\Table(name="fos_user")
 * @ORM\Entity(repositoryClass="App\UserBundle\Repository\UserRepository")
 */
class User extends BaseUser
{
    /**
     * @ORM\ManyToMany(targetEntity="App\UserBundle\Entity\Group")
     * @ORM\JoinTable(name="fos_user_user_group",
     *      joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")},
     *      inverseJoinColumns={@ORM\JoinColumn(name="group_id", referencedColumnName="id")}
     * )
     */
    protected $groups;

    public function __construct()
    {
        parent::__construct();
        $this->groups = new ArrayCollection();
    }

    /**
     * @return Collection|Group[]
     */
    public function getGroups(): Collection
    {
        return $this->groups;
    }

    public function addGroup(Group $group): self
    {
        if (!$this->groups->contains($group)) {
            $this->groups[] = $group;
        }

        return $this;
    }

    public function removeGroup(Group $group): self
    {
        if ($this->groups->contains($group)) {
            $this->groups->removeElement($group);
        }

        return $this;
    }
}

Natomiast w Group widniał zapis:
/**
 * @ORM\Entity
 * @ORM\Table(name="fos_group")
 * @ORM\Entity(repositoryClass="App\UserBundle\Repository\GroupRepository")
 */
class Group extends BaseGroup
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
     protected $id;

    public function __construct()
    {
        parent::__construct();
    }

    public function getId(): ?int
    {
        return $this->id;
    }
}

Przejrzałem pliki z modelami od wtyczki FOSUserBundle i tam nastąpiła zmiana - pojawiły się interfejsy.

Próbowałem dokonać korekt w encjach w poniższy sposób i przy użyciu polecenia php bin/console make:entity --regenerate utworzyć gettery i settery:

User
use FOS\UserBundle\Model\User as BaseUser;
use Symfony\Component\Security\Core\User\UserInterface as BaseUserInterface;
use FOS\UserBundle\Model\UserInterface as UserInterface;
use FOS\UserBundle\Model\GroupInterface as GroupInterface;
use FOS\UserBundle\Model\GroupableInterface as GroupableInterface;

 /**
 * User
 *
 * @ORM\Table(name="fos_user")
 * @ORM\Entity(repositoryClass="App\UserBundle\Repository\UserRepository")
 */
class User extends BaseUser implements UserInterface, GroupableInterface
{
    /**
     * @var GroupInterface[]|Collection
     */
    protected $groups;

    public function __construct()
    {
        parent::__construct();
    }
}

Group
use FOS\UserBundle\Model\Group as BaseGroup;
use FOS\UserBundle\Model\GroupInterface as GroupInterface;

/**
 * @ORM\Entity
 * @ORM\Table(name="fos_group")
 * @ORM\Entity(repositoryClass="App\UserBundle\Repository\GroupRepository")
 */
class Group extends BaseGroup implements GroupInterface
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
     protected $id;

    public function __construct()
    {
        parent::__construct();
    }
}

Jednak w encji User nie pojawiają się oczekiwane rezultaty - nie ma kolekcji dla groups, ani setterów i getterów.

Niby dopisałem "z palca" fragment:
    /**
     * {@inheritdoc}
     */
    public function getGroups()
    {
        return $this->groups ?: $this->groups = new ArrayCollection();
    }

    /**
     * {@inheritdoc}
     */
    public function getGroupNames()
    {
        $names = [];
        foreach ($this->getGroups() as $group) {
            $names[] = $group->getName();
        }

        return $names;
    }

    /**
     * {@inheritdoc}
     */
    public function hasGroup($name)
    {
        return in_array($name, $this->getGroupNames());
    }

    /**
     * {@inheritdoc}
     */
    public function addGroup(GroupInterface $group)
    {
        if (!$this->getGroups()->contains($group)) {
            $this->getGroups()->add($group);
        }

        return $this;
    }

    /**
     * {@inheritdoc}
     */
    public function removeGroup(GroupInterface $group)
    {
        if ($this->getGroups()->contains($group)) {
            $this->getGroups()->removeElement($group);
        }

        return $this;
    }

ale dlaczego tak się dzieje, że nie pojawia się to automatycznie po przebudowaniu modelu? Zapewne robię jakiś prosty błąd, którego nie widzę na ten moment, bo pora jest już dosyć późna.

Ktoś walczył z FOSUserBundle na SF 4 i wie, jak pozbyć się wspomnianych niedogodności? Będę wdzięczny za poświęcony czas i pomoc.
12
Pomoc / Odp: Strona na wzór
« Ostatnia wiadomość wysłana przez s173115 dnia Stycznia 27, 2020, 13:20:44 »
tak, ale bez dobrej znajomości programowania nic nie zrobisz
13
Pomoc / Strona na wzór
« Ostatnia wiadomość wysłana przez Miroslaw845 dnia Stycznia 26, 2020, 20:50:15 »
Witam czy dam radę za pomocą symfony stworzyć stronę podobną w mechanice do tej https://www.hendi.pl/
14
Pomoc / twig - slug dymiczne dane do javascript render controller
« Ostatnia wiadomość wysłana przez lechk dnia Grudnia 18, 2019, 12:47:17 »
Mam render controller w javascript w twig ( symfony 4.4 )
Moj problem polega na tym jak wczytac w miejsce pobrany- warosc z input text box2:
Gdy tak wpisuje otrzymuje error ze render controller nie widzi wartosci pobrany i ma racje bo jest ona w html a nie w twig
"Variable "pobrany" does not exist."
Czy moze mi ktos pomoc jak zainterpretowac wpisanie w render controller zmiennej ktora jest pobrana z input text

<input align="center" type="text" id="box2">
=== javascript ====
var pobrany= document.getElementById('box2');
wynik = "{{ render(controller('App\\Controller\\HomepageController:getdata', {'slug': pobrany} )) }}";
alert(wynik)

Z gory dziekuje za pomoc
15
Pomoc / Odp: Zmiana treści linka %confirmationUrl% w resetting.email.message
« Ostatnia wiadomość wysłana przez mathieus dnia Września 16, 2019, 09:41:10 »
usunąłem ten wiersz.

Próbowałem wyrażeń regularnych z TwigExtension:

<?php

// src/Twig/AppExtension.php
namespace App\Twig;

use 
Twig\Extension\AbstractExtension;
use 
Twig\TwigFilter;

class 
AppExtension extends AbstractExtension
{
    public function 
getFilters()
    {
        return [
            new 
TwigFilter('preg_a_replace', [$this'pregReplace']),
        ];
    }

    public function 
pregReplace($subject$pattern$replacement)
    {
//        return $replacement;
        
$splited preg_split($pattern$subject);
        
//print_r(preg_split($pattern, $subject));
        
return '<'.$splited[1].'>'.$replacement.'</a>';
//        return preg_replace($pattern, $replacement, $subject);
    
}
}
{{ confirmationUrl | preg_a_replace('/>*</','kliknij tutaj') }}e-mail "krzaczy" się jeszcze bardziej. To zadanie nie ma dużego priorytetu więc kończę.
Pozdrawiam
16
Pomoc / Odp: Zmiana treści linka %confirmationUrl% w resetting.email.message
« Ostatnia wiadomość wysłana przez Valantir dnia Września 14, 2019, 15:20:53 »
Wyrzuć
{% autoescape rozne_opcje %}
17
Pomoc / Odp: Zmiana treści linka %confirmationUrl% w resetting.email.message
« Ostatnia wiadomość wysłana przez mathieus dnia Września 12, 2019, 12:04:49 »
Robię teraz według https://stackoverflow.com/questions/33347645/try-to-use-a-template-with-fosuserbundle-for-email-checking, czyli szablonu w osobnym pliku email.html.twigi jest dziwacznie.
{% block body_html %}
{% autoescape rozne_opcje %}
{{ confirmationUrl}}
(...)<p>
Jeśli to Ty zgłaszałeś żądanie - kliknij w <a href="{{ confirmationUrl|raw }}">ten link</a> aby ustawić nowe hasło.
</p>
(...)
Dostaję maila:
Cytuj
http://xxx.xx.xx.xxx/iii/index.php/admin/resetting/reset/vJmLaAAhwADTRkpsdS_FQ10GBNN9r43dlMEunm_3Byo
(...)
<p>
Jeśli to Ty zgłaszałeś żądanie - kliknij w <a href="#" target="_blank" rel="noopener" disabled="disabled" aria-disabled="true">ten link</a>  aby ustawić nowe hasło.
</p>
Więc teraz mam dwa problemy: 1. nie działają znaczniki html, 2. nadal nie można usunąć adresu z nazwy linka.
18
Pomoc / Zmiana treści linka %confirmationUrl% w resetting.email.message
« Ostatnia wiadomość wysłana przez mathieus dnia Września 12, 2019, 10:20:34 »
Witam,
   w pliku FosUserBundle.pl.xliff mam:
<trans-unit id="5">
<source>resetting.email.message</source>
<target>(...)
Jeśli to Ty zgłaszałeś żądanie - kliknij w %confirmationUrl% ten link aby ustawić nowe hasło.
(...)
Pozdrawiamy, </target>
</trans-unit>
niestety, ale w treści linku jest także sam link. Np:
Cytuj
(...)
Jeśli to Ty zgłaszałeś żądanie - kliknij w  http://xxx.xxx.xxx.xxx/iii/index.php/admin/resetting/reset/vTJ4X3nz3nAZlOP42NvA11d9oCJwYb1DHkOHrBM3H4U ten link aby ustawić nowe hasło.
(...)
Pozdrawiamy,
próbowałem zrobić <a href="%confirmationUrl%"></a>, ale 1. jest błąd na poziomie debuggera, 2. jest to niewłaściwe z logicznego punktu widzenia.

Szukałem rozwiązania w internecie, w plikach - nie znalazłem. Z góry dziękuję za pomoc

19
Pomoc / Odp: Problem z Many to Many
« Ostatnia wiadomość wysłana przez Valantir dnia Kwietnia 28, 2019, 18:32:44 »
Co masz na myśli pisząc, że nie możesz "odfiltrować odczytu dla danego typu"? Jakiś kontroler, formularz Ci sprawia problem? Więcej szczegółów poprosimy :)
20
Pomoc / Problem z Many to Many
« Ostatnia wiadomość wysłana przez czerep dnia Kwietnia 24, 2019, 21:56:51 »
Witam, mam takie dość skomplikowane zadanie do zrobienie z relacjami, a mianowicie mam przykładową encję książki, do tej encji książki mam dodatki oraz typy dodatków. Wygląda to mnie więcej tak w bazie danych.
==ksiazki==
id
tytuł

==ksiazki_dodatki== (tabela relacji Many to Many)
ksiazka_id
dodatek_id

==dodatki==
id
nazwa
typ_id - (relacja One to Many do typ_dodatku)

==typ_dodatku==
id
nazwa

Niestety o ile wcześniej miałem zrobione że typ dodatku był jako SimpleArray w bazie dodatki i działało mi to dobrze o tyle teraz niestety nie mogę dojść jak to zrobić. Dodam że każdy typ ma swoje odwzorowanie w encji czyli zmienna i do tego podpiętą relację many to many, o ile zapis działa o tyle nie jestem w stanie w tej chwili odfiltrować odczytu dla danego typu.
Strony: 1 [2] 3 4 ... 10