Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • Oct 14 17:04

    nicksagona on 4.5.10

    (compare)

  • Oct 14 17:03

    nicksagona on 4.5.10

    (compare)

  • Oct 14 17:02

    nicksagona on v4-dev

    Patch dirty save (compare)

  • Oct 14 16:57

    nicksagona on master

    Patch dirty save/set function (compare)

  • Oct 14 16:57

    nicksagona on v5-dev

    Patch dirty save/set function (compare)

  • Aug 18 16:37
    nicksagona closed #23
  • Aug 18 16:37

    nicksagona on 3.6.1

    (compare)

  • Aug 18 16:36

    nicksagona on master

    Patch setValue issue with Check… (compare)

  • Aug 18 16:35

    nicksagona on v3-dev

    Patch setValue issue with Check… (compare)

  • Aug 12 14:54
    B0bbyD0llar opened #23
  • Apr 14 17:34

    nicksagona on 5.3.1

    (compare)

  • Apr 14 17:28

    nicksagona on master

    Add support for column select o… (compare)

  • Apr 14 17:25

    nicksagona on v5-dev

    Add support for column select o… (compare)

  • Feb 12 23:35

    nicksagona on 3.6.0

    (compare)

  • Feb 12 23:34

    nicksagona on v3-dev

    Update workflow (compare)

  • Feb 12 23:34

    nicksagona on master

    Update workflow (compare)

  • Feb 12 23:32

    nicksagona on master

    Update version and copyright (compare)

  • Feb 12 23:32

    nicksagona on v3-dev

    Update version and copyright (compare)

  • Feb 12 22:26

    nicksagona on 3.4.0

    (compare)

  • Feb 12 22:25

    nicksagona on master

    Update version and copyright (compare)

Nick Sagona
@nicksagona
Ah - I've corrected the docs that reference the stand-alone download. That's been removed as it is no longer supported.
Sorry for the confusion there.
Gideon Dannang
@gcd445_twitter
hi , is there an updated pop-bootstrap, or a project w/ pop-auth and pop-acl?
Nick Sagona
@nicksagona
Sorry, unfortunately pop-bootstrap is deprecated and no longer supported. There's currently no tutorial or sample app that demo's auth/acl, but it could be considered.
Maikel Nieves Matamoros
@mikethewolf83
Hi...I am new to this framework. How can I access to database from model without extending model to Record?
Nick Sagona
@nicksagona
Hi - sure, you can just use the database adapter directly, via basic queries or prepared statements with bound parameters. Check out the docs here: https://pop-php-framework.readthedocs.io/en/latest/user_guide/databases.html#querying-a-database
Maikel Nieves Matamoros
@mikethewolf83

Hi - sure, you can just use the database adapter directly, via basic queries or prepared statements with bound parameters. Check out the docs here: https://pop-php-framework.readthedocs.io/en/latest/user_guide/databases.html#querying-a-database

Thanks Nick, but is there a way to avoid doing this:

$db = Pop\Db\Db::connect('mysql', $options);

I mean, a way to get the default database configuration instead of setting a config here

Nick Sagona
@nicksagona
well a typical way to go is set the database as a service within the application. Have it wired up one time at the beginning of the app's lifecycle and then call that DB service as you need it. For example, you could have something like:
$application->services()->set('database', [
    'call'   => 'Pop\Db\Db::connect',
    'params' => [
        'adapter' => 'mysql',
        'options' => $options
    ]
]);
and then anywhere in your application you can access the DB service like:
$db = $application->services['database'];
Maikel Nieves Matamoros
@mikethewolf83

@nicksagona

well a typical way to go is set the database as a service within the application. Have it wired up one time at the beginning of the app's lifecycle and then call that DB service as you need it. For example, you could have something like:

Ok, agreed...sorry for my insistence, but for example in app\src\Module.php there is:

public function register(Application $application)
    {
        parent::register($application);

        if (isset($this->application->config['database'])) {
            $this->initDb($this->application->config['database']);
        }

        if (null !== $this->application->router()) {
            $this->application->router()->addControllerParams(
                '*', [
                    'application' => $this->application,
                    'request'     => new Request(),
                    'response'    => new Response()
                ]
            );
        }

        return $this;
    }

I noticed:

$this->application->config['database']

is there a way to use something like this in my model?

Nick Sagona
@nicksagona
well the model would have to be application-aware in order to access that. Either by passing the app object into the model's constructor, or into the method you're calling on the model.
If you have a DB service registered with the application, you can also access it globally via the static service container class.
Also, the benefit of using the DB Record class, is the DB adapter is registered statically with the Record class and is available globally. Plus the Record class abstracts away a lot of common SQL functionality
via the Active Record pattern (with a little bit of Table Gateway)
Maikel Nieves Matamoros
@mikethewolf83

well the model would have to be application-aware in order to access that. Either by passing the app object into the model's constructor, or into the method you're calling on the model.

Ok okay, in my case I need to do a complex query with joins to three MySQL VIEWs, which have no ID field. This Active Record implementation I don't think will allow me to do it with the query builder.

Nick Sagona
@nicksagona
yes, while the active record and query builder does support simple joins, typically complex queries can (and should) just leverage the DB adapter and writing and executing the SQL directly
Maikel Nieves Matamoros
@mikethewolf83
Hi everyone I'm looking for an example of pop-auth with pop-acl....is there any? I can't figure it out. Greetings
Florian Masy
@fmasy

Hello everybody,

I'm trying to figure out how to configure my apache virtualhost to serve a pop application when the url to access it will have a "prefix" in the request uri.

I'll using the popphp tutorial application as an example => https://pop-php-framework.readthedocs.io/en/latest/tutorial_application/index.html

It has three routes defined: / (root), /post and * (everything else)```

It is installed under D:\dev\pop-tutorial
My virtualhost has DocumentRoot pointing to D:\dev\pop-tutorial\public and I defined a Directory to that same location with the following rewrite rule (the same that are in the .htaccess in the public directory of the application).

So my virtualhost definition look like this:

<VirtualHost *:80>
    ServerName pop-tutorial  
    DocumentRoot "D:\dev\pop-tutorial\public"

    <Directory "D:\dev\pop-tutorial\public">
        Options Indexes FollowSymLinks
        Require all granted
        DirectoryIndex index.php

        RewriteEngine On

        RewriteCond %{REQUEST_FILENAME} -s [OR]
        RewriteCond %{REQUEST_FILENAME} -l [OR]
        RewriteCond %{REQUEST_FILENAME} -f [OR]
        RewriteCond %{REQUEST_FILENAME} -d


        RewriteRule ^.*$ - [NC,L]
        RewriteRule ^.*$ index.php [NC,L]

    </Directory>
</VirtualHost>

If I request http://localhost/post it will route as expected.

But how I can make it works so that I can access it through http://localhost/poptutorial/post ?
In that case the $_SERVER["REQUEST_URI"] will be /poptutorial/post and it doesn't match any routes.

If you have some ideas they are very welcome :)

Nick Sagona
@nicksagona
hello - sure
so if you want to have your routes served from under a base URI, you can do this to your routes config:
    'routes'   => [
        '/poptutorial' => [
            '/' => [
                'controller' => 'Tutorial\Controller\IndexController',
                'action'     => 'index'
            ],
            '/post' => [
                'controller' => 'Tutorial\Controller\IndexController',
                'action'     => 'post'
            ]
        ],
        '*' => [
            'controller' => 'Tutorial\Controller\IndexController',
            'action'     => 'error'
        ]
    ],
by nesting it like that, you can now access routes like http://localhost:8000/poptutorial/post
Florian Masy
@fmasy
Oh, thank you a lot Nick. I had completely missed that from the documentation.
Nick Sagona
@nicksagona
No problem