Ich FMElfinder in Verbindung mit TinyMCE mit für die Verwaltung des Vermögens (Bilder, PDF ...) des Benutzers (verwaltet mit FOSUSerBundle)Zugriff auf Benutzername in der Konfigurationsdatei für Symfony
Ich habe gesehen, dass Dieses Tool kann multiple root Ordner behandeln, aber in meinem Fall ist es nicht ganz verwendbar: Ich möchte einen Stammordner für jeden Benutzer haben.
In der Konfigurationsdatei app/config/config.yml gibt es den Wurzelpfad (e) definiert:
fm_elfinder:
instances:
default:
locale: %locale%
...
connector:
roots:
uploads:
driver: LocalFileSystem
path: uploads/data
Ich war thining über "einfach" wie den Weg zu etwas zu ändern:
path: uploads/data/{the_username}
wo der Benutzername der Benutzername des aktuell angemeldeten Benutzer
ich tun kann
In einem Controller wäre$user = $this->get('security.token_storage')->getToken()->getUser();
$username = $user->getUsername();
Aber ich weiß nicht, ob es möglich ist (und wenn ja, wie) für den Zugriff auf speziell den Benutzernamen des angemeldeten Benutzers in einer Konfigurationsdatei
Danke Wenn Sie Vorschläge haben
================== [EDIT] =============================== ============
Ich habe die override of configuration verwenden. Ich glaube, ich die Schritte gefolgt, aber ich habe nicht machen es Arbeit geschafft:
1 - Erstellen Sie die Klasse
use FM\ElfinderBundle\Model\ElFinderConfigurationProviderInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;
class ElfinderConfigurator implements ElFinderConfigurationProviderInterface
{
protected $container;
protected $options;
/**
* @param ContainerInterface $container
*/
public function __construct($options, ContainerInterface $container)
{
$this->container = $container;
$this->storage = $container->get('security.token_storage');
$this->options = $options;
}
/**
* @param $instance
*
* @return array
*/
public function getConfiguration($instance)
{
//retrieve basepath
$basepath_abs = $this->container->get('kernel')->getRootDir()."/../web/uploads";
$basepath = "uploads/data";
//define path for user
$userid = $this->storage->getToken()->getUser()->getId();
$root = $basepath.'/'.$userid;
$this->options['instances']['default']['connector']['roots']['uploads']['path'] = $root.'/root';
$this->options['instances']['default']['connector']['roots']['uploads']['upload_max_size'] = '2M';
$option = [
'corsSupport' => false,
'roots' => $this->options['instances']['default']['connector']['roots'],
];
$root_abs = $basepath_abs.'/data/'.$userid;
//creates dir if not available
if (!is_dir($root_abs)) {
mkdir($root_abs.'/root', 0775, true);
}
return $option;
}
}
2 - Stellen Sie meinen Dienst:
myvendor.mybundle.elfinder_configurator:
class: Myvendor\Mybundle\Services\ElfinderConfigurator
arguments: ["%fm_elfinder%", "@service_container"]
3 - Anruf der Dienst in app/config/config.yml
fm_elfinder:
configuration_provider: myvendor.mybundle.elfinder_configurator
...
Es funktioniert teilweise: Wenn ich die elfinde öffnen, wird das Verzeichnis sind cor direkt erstellt, wenn sie nicht existieren. Aber es muss ein Pfadproblem, und ich bin mir nicht sicher, es ist gut überschrieben, weil: - Die Daumen werden nicht in elfinder angezeigt - Wenn ich das Bild in den Editor hinzufügen, habe ich nicht die richtige Pfad des Bildes, ich habe:
//app_dev.php/efconnect?cmd=file&target=l1_Q2FwdHVyZSBkJ8OpY3JhbiBkZSAyMDE2LTAxLTI0IDE0OjM2OjI0LnBuZw
anstelle des tatsächlichen Pfad des Bildes (wenn ich diesen Weg nicht die Überschreibung verwenden, arbeitet das Werkzeug und gibt mir)
../../../../uploads/data/1/root/img1.png
und Kein Bild wird angezeigt.
Auch wenn ich in der js Konsole suchen die
efconnect?cmd=open&target=&init=1&tree=1&_=1469377765664
Ich sehe, dass uplMaxSize 200M,
in jedem Fall ist es keine js Fehler in der Konsole
dies nicht möglich Nein, da die Konfiguration den Behälter zu kompilieren verwendet wird, die verwendet wird, von ALLEN Benutzern, lange bevor eine Sicherheitskomponente einen angemeldeten Benutzer gebunden hat. – mblaettermann
@pbenard Welche Form? – mblaettermann