У кого-нибудь есть идеи, как интегрировать Red bean ORM в Silex. Любые доступные примеры/документы. Пожалуйста, помогите мне.
Спасибо
У кого-нибудь есть идеи, как интегрировать Red bean ORM в Silex. Любые доступные примеры/документы. Пожалуйста, помогите мне.
Спасибо
Это очень простая установка, показанная ниже.
Поскольку Redbean предоставляет фасад статического класса RedBean_Facade
, который в документации обозначается как R
, нет необходимости регистрировать его как службу приложения Silex.
В идеале вы должны установить и Silex, и Redbean с Composer. На странице Redbean Github рассказывается, как использовать его с Composer.
<?php
require __DIR__.'/vendor/autoload.php';
use Silex\Application;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use RedBean_Facade as R;
$app = new Application();
$app['db.connection.default.driver'] = "mysql";
$app['db.connection.default.host'] = "localhost";
$app['db.connection.default.name'] = "mydatabase";
$app['db.connection.default.user'] = "user";
$app['db.connection.default.password'] = "password";
$app['db.connection.default.rsn'] = $app->share(function () use ($app) {
return sprintf('%s:host=%s;dbname=%s',
$app['db.connection.default.driver'],
$app['db.connection.default.host'],
$app['db.connection.default.name']
);
});
R::setup(
$app['db.connection.default.rsn'],
$app['db.connection.default.user'],
$app['db.connection.default.password']
);
$app->get('/article/{id}/show', function ($id) {
$article = R::load('article', $id );
// do something with $article, then
// return an HTML page of the article.
});
$app->get('/article/new', function () {
// return an HTML page with a form that contains
// input fields with HTML name attributes set to
// 'title' and 'body' for example.
});
$app->post('/article/new', function (Request $request) use ($app) {
$article = R::dispense('article');
$article->title = $request->request->get('title');
$article->body = $request->request->get('body');
$id = R::store($article);
return $app->redirect(sprintf('/article/%d/show', $id));
});
$app->run();
$parameters = Yaml::parse(file_get_contents('parameters.yml'))
. Когда вы говорите о каждой странице, вы имеете в виду каждое действие маршрута/контроллера, которое отображает страницу?
- person Adam Elsodaney; 01.10.2014
Я создал поставщика услуг для RedBean в Silex.
Просто поместите это в свой композитор. .json и обновить:
"ivoba/redbean-service-provider": "dev-master"
Затем зарегистрируйте провайдера:
$app->register(new Ivoba\Silex\RedBeanServiceProvider(), array('db.options' => array( 'dsn' => 'sqlite:/tmp/db.sqlite' )));
Используйте это так:
use RedBean_Facade as R;
...
$app['db']; //call once to init RedBean
...
$e = R::findAll('table',' ORDER BY date DESC LIMIT 2');
FWIW, я также написал поставщик услуг RedBean для Silex а>. Это позволяет вам использовать RedBean как экземпляр вместо статического фасада (который лично мне не нравится):
$book = $app['redbean']->dispense('book');
$book->title = 'PHP for dummies';
$app['redbean']->store($book);
Таким образом, RedBean доступен во всем приложении Silex без необходимости use Redbean_Facade
в каждом файле.
Это все еще продолжается, все вклады высоко ценятся :)
Я сделал это только сегодня. Просто загрузите с помощью Composer обе библиотеки (Silex и RedBean). Убедитесь, что у вас есть выпуск Fat Silex, чтобы оставаться в безопасности. И... чтобы сделать элегантный способ, вы должны создать контроллер, который загружает RedBean, а затем сделать контроллер в качестве поставщика услуг, тогда у вас будет возможность настройки RedBean в любом месте вашего приложения. В ближайшие дни буду делать RedBeanServiceProvider.