[TYPO3-german] Extbase - createQuery - statement Problem

Marc Willmann typo3 at marc-willmann.de
Wed Mar 11 12:52:19 CET 2015


Du musst Dir echt ein Buch gönnen. :-/

Fang mit einer eigenen kleinen Extension an, irgendwas simples und
erweiter nicht gleich Models von anderen.

Namespaces sind nicht Dein - jedenfalls nicht Dein einziges - Problem.

class UsersRepository extends ....
Class '....\WwlfeuserfilesRepository' not found

Klar, dass PHP/Extbase Deine Klasse nicht findet, wenn Du sie anders nennst.

Du hast Deinen Fragen nach zu urteilen soviele Baustellen gleichzeitig
offen, dass Du Dir dringend ein paar Grundlagen anschauen und verstehen
solltest!

Marc

Am 11.03.15 09:35, schrieb Christian Leicht:
> Hallo Silke,
> 
> ja ich habe auch die fe_users um 3 Felder erweitert. Das klappt auch gut.
> 
> Ich habe mir Deinen Vorschlag angeschaut und er leuchtet mir auch ein,
> aber es läuft nicht.
> 
> Wenn ich im Repository folgendes einfüge:
> 
> /**
>  * The repository for Users
>  */
> class UsersRepository extends
> \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository {
> 
> 
>     public function showFeuser($userid){
> 
>             $query = $this->createQuery();
>             $query->statement("SELECT * FROM fe_users WHERE uid =
> '".$userid."'");
> 
>             return $query->execute();
>     }
> 
> }
> 
> 
> Bekomme ich folgende Fehlermeldung:
> Fatal error: Class
> 'WWL\WwlFeuserfiles\Domain\Repository\WwlfeuserfilesRepository' not
> found in
> /home/httpd/test/typo3/typo3_src-6.2.10/typo3/sysext/core/Classes/Utility/GeneralUtility.php
> on line 4442
> 
> Irgend was stimmt da mit den Namespaces nicht, glaube ich
> 
> Christian
> 
> Am 10.03.2015 um 14:42 schrieb Silke Capo:
>> Hallo Christian,
>>
>> ich wollte auch einen Zugriff auf die fe_users haben. In meiner
>> Extension musste ich dazu folgende Schritte vornehmen:
>>
>> Unter Domain/Models ein Model angelegt (weil ich zusätzliche Felder
>> genutzt habe:
>> /**
>>   * User Model
>>   *
>>   *      * @validate StringLength(minimum=6, maximum=15)
>>   *
>>   */
>> class Users extends \TYPO3\CMS\Extbase\Domain\Model\FrontendUser {
>>
>>      /**
>>       * @var string
>>       */
>>      protected $passwordOld = '';
>>
>> ...
>>
>>      /**
>>       * __construct
>>       */
>>      public function __construct() {
>>           parent::__construct();
>>      }
>>
>>      /**
>>       * Sets the $passwordOld value
>>       *
>>       * @param string $passwordOld
>>       * @return void
>>       * @api
>>       */
>>      public function setPasswordOld($passwordOld) {
>>          $this->passwordOld = $passwordOld;
>>      }
>>
>>      /**
>>       * Returns the $passwordOld value
>>       *
>>       * @return string
>>       * @api
>>       */
>>      public function getPasswordOld() {
>>          return $this->passwordOld;
>>      }
>>
>> ...
>>
>> }
>>
>> Wichtig hier: von Frontenduser ableiten, nicht von der allgemeinen
>> Klasse.
>>
>> Deine zusätzlichen Felder als Variablen, + getter und setter.
>>
>> Dann das Repository:
>> /**
>>   * The repository for Users
>>   */
>> class UsersRepository extends
>> \TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository {
>> ...
>> }
>>
>> Hier musst du nur dann etwas eintragen, wenn du spezielle
>> Datenbankabfragen brauchst, die normalen wie "findAll" funktionieren
>> automatisch. Auch hier wieder von FrontendUser ableiten!
>>
>> Dann unter Configuration/TypoScript noch das Mapping:
>> in setup.txt:
>> config.tx_extbase {
>>      persistence {
>>          classes {
>>              DigitalWorx\DxSpecialistsearch\Domain\Model\Users {
>>                  mapping {
>>                      tableName = fe_users
>>                      recordType =
>>                  }
>>              }
>>          }
>>      }
>> }
>>
>> plugin.tx_dxspecialistsearch {
>>      persistence {
>>          classes {
>>
>>              DigitalWorx\DxSpecialistsearch\Domain\Model\User {
>>                  mapping {
>>                          tableName = fe_users
>>                  }
>>              }
>>          }
>>          ...
>>      }
>> ...
>> }
>>
>> In ext_tables.php:
>>
>> /**
>>   * Table configuration fe_users
>>   */
>> $tempColumns = array (
>>      'password_old' => array (
>>          'exclude' => 1,
>>          'label' =>
>> 'LLL:EXT:dx_specialistsearch/Resources/Private/Language/locallang_db.xlf:fe_users.password',
>>
>>
>>          'config' => array (
>>              'type' => 'input',
>>              'size' => 30,
>>              'eval' => 'string',
>>              'readOnly' => 1,
>>              'default' => ''
>>          )
>>      ),
>> );
>> $fields = 'password_old';
>>
>> \TYPO3\CMS\Core\Utility\GeneralUtility::loadTCA('fe_users');
>>
>> if (version_compare(TYPO3_branch, '6.2', '<')) {
>>     
>> \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('fe_users',
>> $tempColumns, 1);
>> } else {
>>     
>> \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('fe_users',
>> $tempColumns);
>> }
>>
>> so hat es bei mir geklappt.
>>
>> VG Silke
>>
>> On 10.03.2015 14:12, typo3-german-request at lists.typo3.org wrote:
>>> Message: 9
>>> Date: Tue, 10 Mar 2015 13:24:18 +0100
>>> From: Christian Leicht<usenet at schani.com>
>>> Subject: [TYPO3-german] Extbase - createQuery - statement Problem
>>> To:typo3-german at lists.typo3.org
>>> Message-ID:<mailman.7264.1425990285.623.typo3-german at lists.typo3.org>
>>> Content-Type: text/plain; charset=utf-8; format=flowed
>>>
>>> Hallo,
>>> ich hab noch ne Frage zu meinem gestrigen Problem. Will aber nicht
>>> wieder ?ber Extbase herziehen;-)  Deswegen ein neuer Post
>>>
>>> Also, ich muss in einer Extension auf die fe_user DB zugreifen. Dazu
>>> habe ich mir in meiner extension im repository Ordner
>>
> _______________________________________________
> TYPO3-german mailing list
> TYPO3-german at lists.typo3.org
> http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german


-- 
Marc Willmann. TYPO3-Freelancer.
http://www.marc-willmann.de

Seelandstr. 14-16
D-23569 Lübeck

TYPO3 Certified Integrator


More information about the TYPO3-german mailing list