Я создаю сайт с Symfony2 и PostgreSQL (в первый раз). Недавно я обнаружил слой базы данных Pomm, я решил использовать его вместо Doctrine2.Неверный путь к файлу карты Pomm
Однако, когда я пытаюсь отобразить некоторые данные, я получаю исключение смертельной ошибки. Проблема может возникнуть из-за неправильного пути к сгенерированному файлу карты Pomm. К сожалению, я не нашел никакой помощи в Руководстве и учебниках, которые я прочитал, чтобы исправить мою ошибку.
Вот что я сделал:
1-PommBundle Установка в Symfony2.3.1 с Composer = ок
2- Setup (PommBundle регистрация в прикладном ядра + настройки базы данных) = ок
3- Карта генерации файлов для таблицы БД 'продукта' (как изложено ниже) = ок
app/console pomm:mapfile:create product
Pomm генерируется в папку 'базы данных' и теперь структуру веб-сайта является:
-- Source Files
|-- Database
|-- PublicSchema
|-- Base
ProductMap.php
Product.php
ProductMap.php
|-- app
|-- bin
|-- src
|-- vendor
|-- web
4- приложение/autoload.php
PommBundle Документация о autoload.php немного сбивает с толку (для англоязычного говорящего). В самом деле, вот что написано:
If you are using Symfony 2.0.x, you may still be using sf2 autoloader. Update your app/autoload.php file.
Однако я использую Symfony 2.3.1, поэтому я думал, что не нужно обновить файл приложения/autoload.php.
Кроме того, это не очень понятно, что вы должны добавить в файл:
# app/autoload.php (original file)
use Doctrine\Common\Annotations\AnnotationRegistry;
use Composer\Autoload\ClassLoader;
$loader = require __DIR__.'/../vendor/autoload.php';
AnnotationRegistry::registerLoader(array($loader, 'loadClass'));
return $loader;
PommBundle документация говорит:
Update your app/autoload.php file [by adding the following code]:
$loader->registerNamespaces(array(
'Symfony' => array(__DIR__.'/../vendor/symfony/src', __DIR__.'/../vendor/bundles'),
...
'Pomm' => __DIR__.'/../vendor/pomm/pomm',
'Pomm\\PommBundle' => __DIR__.'/../vendor/pomm/pomm-bundle',
Я не понимаю, как я мог бы добавить к этому код в мой файл (показано выше). Поэтому я догадался, что это было только для Symfony 2.0. *.
5 Проблема в контроллере
в регуляторе я набрал путь к файлу карты Pomm следующим образом:
namespace Admin\ProductBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class DefaultController extends Controller
{
public function indexAction()
{
$myproducts = $this->get('pomm')
->getDatabase('database')
->createConnection()
->getMapFor('Database\PublicSchema\Product')
->findAll();
return $this->render('AdminProductBundle:Default:index.html.twig',
array("myproducts" => $myproducts));
}
}
Я, конечно, сделал что-то неправильно, потому что я получаю эту ошибку :
FatalErrorException: Error: Class 'Database\PublicSchema\ProductMap' not found in
/var/www/mywebsite/vendor/pomm/pomm/Pomm/Connection/Connection.php line 153
Я был бы очень признателен за любую помощь. Благодарю.
То, что вы написали, правда, но в сообщении об ошибке была опечатка. На самом деле мое имя базы данных не является базой данных или MyDatabase, я просто переименовал ее, чтобы сделать мой вопрос более ясным (видимо, я потерпел неудачу, ха-ха). Извините, что вы смутили вас, я только что отредактировал ошибку сообщения. Таким образом, нет никаких проблем с именем базы данных. –
@Jules вы обновили autoload.php, как это было сделано в документах? https://github.com/chanmix51/PommBundle#download-the-files – Hast
Hast: Еще раз спасибо за вашу помощь. Нет, я не обновлял autoload.php, я собираюсь изменить свой вопрос и объяснить, почему. –