Giter Club home page Giter Club logo

cms's Introduction

Grafite CMS

Grafite has archived this project and no longer supports or develops this code. We recommend using only as a source of ideas for your own code.

CMS - Add a CMS to any Laravel app to gain control of: pages, blogs, galleries, events, custom modules, images and more.

Build Status Packagist license

Grafite CMS is a full fledged CMS that can be added to any Laravel application. It provides you with full control of things like: pages, menus, links, widgets, blogs, events, faqs etc. Grafite CMS comes with a module builder for all your custom CMS needs, as well as a module publishing tools. So if you decide to reuse some modules on future projects you can easily publish thier assets seamlessly. If you wish to make your Grafite CMS module into a PHP package, then you will need to have it publish its assets to the cms/modules directory.

What is simple vs complex setup?

Simple setup uses Grafite Builder as the backbone of an app for you using Laravel, once the setup command has been run you will have a full CMS as an app. Complex setup is specifically for developers who want to add a CMS to their existing app.

Author(s):

General Requirements

  1. PHP 7.1.3+
  2. MySQL 5.7+
  3. OpenSSL

Compatibility and Support

Laravel Version Package Tag Supported
5.8.x 3.3.x no
5.7.x 3.x.x no
5.6.x 3.0.x no
5.5.x 2.4.x no
5.4.x 2.3.x no

Documentation

Installation

Create a new Laravel application, and make a database somewhere and update the .env file.

  • Run the following command:
composer require grafite/cms
  • Then run the vendor publish:
php artisan vendor:publish --provider="Grafite\Cms\GrafiteCmsProvider"

!!! Tip "If you wish to use the publish datetime picker - set your app's timezone config to correspond with your location"

Simple Setup

!!! warning "The simple setup requires a fresh Laravel application."

If you're looking to do a simple website with a powerful CMS, and the only people logging on to the app are the CMS managers. Then you can run the setup command, it will install everything it needs, run its migrations and give you a login to start with. Take control of your website in seconds.

php artisan grafite:cms-setup

Now you're done setup. Login, and start building your amazing new website!

You can login as an admin with the following credentials:

U: [email protected]
P: admin

Complex Setup

!!! warning "Complex setup is needed for applications that have already have existing code including the login/logout set up."

If you just want to add Grafite CMS to your existing application and already have your own application running then follow the instructions below:

  • Add the following to your routes provider:
require base_path('routes/cms.php');
  • Add the following to your app.scss file, you will want to modify depending on your theme of choice.
@import "resources/themes/default/assets/sass/_theme.scss";
  • Then migrate:
php artisan migrate
  • Then add to the Kernel Route Middleware:
'cms' => \App\Http\Middleware\GrafiteCms::class,
'cms-api' => \App\Http\Middleware\GrafiteCmsApi::class,
'cms-language' => \App\Http\Middleware\GrafiteCmsLanguage::class,
'cms-analytics' => \Grafite\Cms\Middleware\GrafiteCmsAnalytics::class,

In order to have modules load as well please edit the autoload psr-4 portion to your composer file:

"autoload": {
    ...
    "psr-4": {
        "App\\": "app/",
        ...
        "Cms\\": "cms/"
        }
}

CMS Access

Route to the administration dashboard is "/cms/dashboard".

Grafite CMS requires Grafite Builder to run (only for the FormMaker), but Grafite CMS does not require you to use the Grafite Builder version of roles. But you will still need to ensure some degree of control for Grafite CMS's access. This is done in the Grafite CMS Middleware, using the gate and the Grafite CMS Policy. If you opt in to the roles system provided by Grafite Builder, then you can replace 'cms' with admin to handle the Grafite CMS authorization, if not, you will need to set your own security policy for access to Grafite CMS. To do this simply add the Grafite CMS policy to your app/Providers/AuthServiceProvider.php file, and ensure that any rules you wish it to use are in within the policy method. We suggest a policy similar to below.

Possible CMS Access Policy:

Gate::define('cms', function ($user) {
    return (bool) $user;
});

Gate::define('cms-api', function ($user) {
    return true;
});

Or Using Grafite Builder:

Gate::define('cms', function ($user) {
    return ($user->roles->first()->name === 'admin');
});

Fun Route Trick

If you're looking for clean URL pages without having to have the URL preceed with page or p then you can add this to your routes.

Make sure you put it at the bottom of the routes or it may conflict with others.

Route::get('{url}', function ($url) {
    return app(App\Http\Controllers\Cms\PagesController::class)->show($url);
})->where('url', '([A-z\d-\/_.]+)?');

Roles & Permissions (simple setup only)

With the roles middleware you can specify which roles are applicable separating them with pipes: ['middleware' => ['roles:admin|moderator|member']].

The Grafite CMS middleware utilizes the roles to ensure that a user is an 'admin'. But you can elaborate on this substantially, you can create multiple roles, and then set their access in your app, using the roles middleware. But, what happens when you want to allow multiple roles to access the CMS but only allow Admins to access your custom modules? You can use permissions for this. Similar to the roles middleware you can set the permissions ['middleware' => ['permissions:admin|cms']]. You can set custom permissions in config/permissions.php. This means you can set different role permissions for parts of your CMS, giving you even more control.

API Endpoints

Grafite CMS comes with a collection of handy API endpoints if you wish to use them. You can define your own policies for access and customize the middleware as you see fit.

Token

The basic Grafite CMS API endpoints must carry the Grafite CMS apiToken defined in the config for the app. This can be provided by adding the following to any request:

?token={your token}

** All published and public facing data will be available via the API by default.

/cms/api/blog
/cms/api/blog/{id}
/cms/api/events
/cms/api/events/{id}
/cms/api/faqs
/cms/api/faqs/{id}
/cms/api/files
/cms/api/files/{id}
/cms/api/images
/cms/api/images/{id}
/cms/api/pages
/cms/api/pages/{id}
/cms/api/widgets
/cms/api/widgets/{id}

Images

Images are resized on upload for a better quality response time. They follow the guidelines specified in the config under cms.max-image-size.

S3

Regarding S3 bucket usage. You will need to set the permissions accordingly to allow images to be saved to your buckets. Then you need to set your buckets to allow public viewing access. This is an example of such a policy.

{
    "Version":"2008-10-17",
    "Statement":[{
        "Sid":"AllowPublicRead",
        "Effect":"Allow",
        "Principal": {
            "AWS": "*"
        },
        "Action":["s3:GetObject"],
        "Resource":["arn:aws:s3:::MY_BUCKET/public/images/*"]
    }]
}

Replace MY_BUCKET with your bucket name.

FileSystem Config

If using S3 you will need to add the following line to your filesystem config: 'visibility' => 'public',

Also Provides

The Grafite CMS package also provides the following packages:

  • DevFactory/Minify
  • Grafte/Builder

Config

Grafite CMS has a rather elaborate config with many options available. You can expand the core modules, enable / disable features, and configure so much more.

Key Description
analytics Choose an analytics engine for the dashboard (internal or google)
pixabay Your pixabay API code
db-prefix Add a prefix to the Grafite CMS content tables
live-preview Preview your site in the editor view
frontend-namespace Sets the default namespace for the frontend code
frontend-theme The theme for the frontend
load-modules Do you want to load the external modules
module-directory Directory for custom Grafite CMS modules
active-core-modules Which core Grafite CMS modules are active
rss A set of attributes which can be set for the RSS feed
site-mapped-modules The module urls and their repositories that build the site map XML
auto-translate Automatically translate your content to other languages with Google Translate
default-language Your website's default language
languages Languages available in your website (enables their tabs in the editor)
storage-location Storage for files/ images (s3 or local)
max-file-upload-size The maximum file size for upload (Must also be set in php.ini)
preview-image-size When uploading images we cache clones at a smaller size (default: 800)
cloudfront Set a cloudfront URL to swap for the S3 bucket link
backend-title A title for the CMS (default: cms)
backend-route-prefix The route prefix for the backend of the CMS (default: cms)
backend-theme Theme for the backend (standard
registration-available Enable or disable registration
pagination Results per pack in backend
api-key Api Key for the Redactor photo and file injection
api-token Api Token for the Redactor photo and file injection, and the general external API calls
forms Forms config for core modules

API

Grafite's CMS API is very simple, and it has a VERY simple auth system using a single token which can be defined with in your env. You can easily use this to manage integration with various platforms etc. The general base route for all API requests is:

/cms/api/{resource-url}?token={CMS_API_TOKEN}
URL Resource
blog Blog
events Events
endorsements Endorsements
faqs FAQs
files Files
images Images
pages Pages
widgets Widgets

Each of these routes can be called or, you can also get a specific resource instance with the ID:

Example:

/cms/api/blog/1?token=9a78sd6f9as6df9

Multilingual

Translations

All too often we need translations in our sites and even our apps. Grafite CMS has got a very simple way of handling multiple languages. Translations is set up so that in the config if you add any languages to the languages array you will be able to define custom entries for those languages.

Auto-Translate

auto-translate: false

In order to enable the auto-translate ensure that it is set to true in your config.

Translatable Modules

Simply add the translatable trait to your module's model and then update your modules to follow a similar pattern to the Grafite CMS pages structure see the following files for reference:

Grafite\Cms\Controllers\PagesController
Grafite\Cms\Repositories\PageRepository
Grafite\Cms\Models\Page

Archiving and Clean up:

You will need to extend CmsModel rather than the default Model. It will also need to use the Translatable Trait.

use Grafite\Cms\Models\CmsModel;
use Grafite\Cms\Traits\Translatable;

class Books extends CmsModel
{
    use Translatable;
}

You will also need to set bindings similar to this in your module event provider.

'eloquent.saved: Grafite\Cms\Models\Page' => [
    'Grafite\Cms\Models\Page@afterSaved',
],
'eloquent.created: Grafite\Cms\Models\Page' => [
    'Grafite\Cms\Models\Page@afterCreate',
],
'eloquent.deleting: Grafite\Cms\Models\Page' => [
    'Grafite\Cms\Models\Page@beingDeleted',
],

These bindings ensure that when you save you create an archive of the previous entry, and on deleting of a item the system clears out any translations and archives it left behind. The created binding allows for the auto-translate so you can utilize the power of Google Translate.

Language Links

Grafite CMS comes with a blade directive which generates links for your supported languages and provides a simple way to swap between the languages of a single page or blog entry while remaining on the same URL.

Supporting Language URL Prefixes

By default we support the use of cookies to handle languages and swapping them. Since each page/blog/event etc can have a specific url relative to its language with this current build there isn't much point to the prefixes for languages. But, that being said, sometimes its handy so here is an easy way to add support for it.

Just add this code to the map() method in the RouteServiceProvider.php:

$segments = request()->segments();
$supportedLanguages = array_keys(config('cms.languages'));

if (isset($segments[0]) && in_array($segments[0], $supportedLanguages)) {
    $language = $segments[0];
    unset($segments[0]);
    return redirect(implode('/', $segments))->withCookie('language', encrypt($language))->send();
}

Promotions

Much like the term implies promotions are like advertisements. They are intended to be treated like widgets, the main difference is that they have time scopes. This means you can put together promotional materials and content and set their publish date and time, as well as a finished at date and time to have the promotion disappear. This makes it very easy to schedule launches of campaigns etc.

@promotion('slug')

You can set these on any theme files. We recommend you leave them in the theme files and simply change the content and dates when you need to.

Themes

Grafite CMS has a full scope theming tool built right in. You can easily generate basic themes that can be built on and kept clear of your views. All the listed templates with a star are optional - otherwise everything else is required, for the basic support.

Basic Theme Structure

  • assets
    • js
      • theme.js
    • sass
      • _basic.scss
      • _theme.scss
  • blog
    • all.blade.php
    • featured-template.blade.php
    • show.blade.php
  • events
    • all.blade.php
    • date.blade.php
    • calendar.blade.php
    • featured-template.blade.php
    • show.blade.php
  • faqs
    • all.blade.php
  • gallery
    • all.blade.php
    • show.blade.php
  • layout
    • master.blade.php
  • pages
    • all.blade.php
    • featured-template.blade.php
    • home.blade.php
    • show.blade.php
  • partials
    • navigation.blade.php
  • public
    • img

You have the ability to include other theme views into your view using the @theme('path') directive with Blade. Otherwise its basically anything and everything Blade can do including any directives you wish to expand it with.

Blade Directives

Grafite CMS has some custom directives added to Blade which allows you to include files from your theme easily, as well as other parts.

@theme('path.to.view')

You can always add the cms-frontend:: namespace to the @include('path') or instead use @theme('path').

@block('slug')

Create unique and elegant designs with block directives in your templates for pages and blogs.

!!! Warning With the block blade directive you do not specify the module it needs to load, it determines that from the first string in the request URL. It will default to page if no matching module name matches the URL. In the case of something like events, it expects the variable in the template to be $event. It is wrapped in the optional method to protect the view from breaking the app.

@menu('slug')

Easily add menus to your views with the menu blade directive.

@modules(['modules-to-ignore'], 'link-class', 'list-item-class')

Generate links to modules automatically (Bootstrap 4 by default).

@widget('slug')

Add widgets to your views with the menu blade directive, just specify the SLUG.

@image('id', 'class')

Provides an image URL with an html tag and extra for adding a class

@image_link('ID')

Provides an image URL

@images('tag')

Images will be provided as an array, and if you skip the tag then the method will return all images, otherwise it follows the tagging.

@edit('module', 'id')

There is also the Grafite CMS Service which can be run inside your blade views. Its as simple as {{ Cms::method() }}

@markdown('content')

Convert your markdown blog or page entries into HTML.

@languages('link-class', 'list-item-class')

Generate links for each supported lanugage in your website

Helper Methods Available:

  • menu('slug', 'optional-view-path')
  • images('tag')
  • widget('slug')
  • editBtn('module', 'id')

Pages and Blocks

There are some special features for pages which are not available for other parts of the site.

Blocks

Pages are special and can often require complex designs. If your application needs some of the more abstract designs you can still use Grafite CMS for page management by using the block system.

{!! $page->block('main') !!}

or

{{ block('main') }}

By placing code like this in your template Grafite CMS will generate the main block if it does not exist yet. If it does and has content it will render the content. It's really that simple.

Publishing

Command

php artisan theme:publish {name}

The Grafite CMS theme publisher will publish the public directory only. If you want to integrate assets you need to do so using your webpack or gulp file, pending on which setup you use.

Laravel Verison Asset builder
5.4+ webpack.mix.js
5.3 gulpfile.js

Basic Theme (top tier)

  • assets
  • blog
  • events
  • faqs
  • gallery
  • layout
  • pages
  • partials
  • public
    • img

Symlink

Command

php artisan theme:link {name}

The Grafite CMS theme link tool will create a symlink between your public folder and a folder in your public directory called theme. This can make it easier to manage assets within a theme.

Laravel Verison Asset builder
5.4+ webpack.mix.js
5.3 gulpfile.js

Basic Theme (top tier)

  • assets
  • blog
  • events
  • faqs
  • gallery
  • layout
  • pages
  • partials
  • public -> {app_directory}/public/theme
    • img

Modules

Grafite CMS comes with a handful of modules for handling a basic application/website including: Images, Files, Blog, Pages, Faqs, etc. Below you will find a full listing of the modules that come pre-packaged with Grafite CMS. In order to create your own Modules and ensure that they are loaded you MUST add "Cms\\": "cms/" to the PSR-4 group in your composer.json file.

Pre-packaged Modules

  • Blog
  • Pages
  • Menus
  • Widgets
  • Faqs
  • Images
  • Files
  • Events

You have the freedom to make any modules you want. You can use the artisan module:make or the artisan module:crud to generate them and then artisan module:publish to publish their contents.

Assets

Grafite CMS modules have an Assets directory which is intended to contain all your JS and SASS or CSS. In order to load the Assets in your Module, you can use the Cms facade.

Grafite CMS comes with a Minify package so you can easily load your modules assets with calls like below. You don't have to set the content-type. But pending on what you're loading you may want to override what the Cms service determines is the content-type.

So if you want to load your css file in your Sample module's Assets you could do the following:

Assets/css/styles.css is the file we're grabbing.

<link rel="stylesheet" type="text/css" href="{{ Cms::moduleAsset('sample', 'css/styles.css', 'text/css') }}">

Or we can load some JavaScript, and yes jQuery is already inside Grafite CMS.

Assets/js/module.js is the file we're grabbing.

<script type="text/javascript" src="{{ Cms::moduleAsset('sample', 'js/module.js', 'application/javascript') }}"></script>

Composer

So now you've made a CMS module and it's serving your application well, but now you've decided that it would make more sense for it to be a composer package, that you can run inside any app for easier maintenance. This also gives you far more freedom to decide how you wish to integrate the module into your app.

module:composer {name} {namespace}

This will generate a composer file, as well set the namespace of your module to a new package namespace.

Config

The configs are autoloaded and are added to the cms config.

config('cms.modules.sample') // would retrieve the sample modules internal config.php contents

If you want to access a config that is customizable for your module you can publish one:

php artisan vendor:publish

CRUD

Grafite CMS can generate custom CRUD modules for your application giving it all the power you want as fast as possble. Simply run the command: php artisan module:crud and discover the many hidden powers inside the Grafite CMS. The CRUD generator will produce a module with basic unit tests started. You would then need to setup your migrations etc, and then publish the module to your app. Check out the publishing for more details.

Forms

You can use the Form Maker tool which is provided by Grafite Builder

Redactor

You can utilize redactor (the WYSIWYG) in your CRUD by adding .redactor to any textarea class.

Images and Files:

Inside the redactor instance you can easily add images and files which you have uploaded to Grafite CMS. Its as easy as clicking them to have them added to the entry.

Front-end/ Theme

When you generate a module the system will also generate a front-end or theme component which is kept in the Publishes directory. The is the portion of code that your visitors will see. You will need to publish this code using the php artisan module:publish {name} command. Provided you leave the module inside the cms/modules directory. However, you can also make your module into a composer package.

Files & Images

Grafite CMS is always concerned with security of what you provide, the potential open doors in your website/ app. As such, the Files which are uploaded to the CMS are locked outside of the public access points.

What does this mean?

This means that when you're website is providing these to visitors they are actually getting them through an API access point. This is done to ensure that the files do not reveal thier location. This means that no webscrappers can crawl your directories and take off files they shouldn't be, including files that have yet to be released.

Storage Location

In the config you can set the storage location for your file uploads. This can be either S3 or local. To get S3 to work correctly you need to configure Laravel as you would with S3. Grafite CMS will take it from there. So simply add your details to the config and it should work. The CMS loads all the third-party packages you will need.

Make

Grafite CMS has a powerful CRUD builder. But lets say you want to have a custom module that integrates with another service or doesn't involve a CRUD at all. Then the php artisan module:make command will be your best tool. It will create a minimum viable module with a very basic admin layer and client layer which you can customize as you see fit.

Redactor

You can utilize redactor in your module by adding .redactor to any textarea class.

Images and Files:

Inside the redactor instance you can easily add images and files which you have uploaded to the CMS. Its as easy as clicking them to have them added to the entry.

Front-end/ Theme

When you generate a module the system will also generate a front-end or theme component which is kept in the Publishes directory. The is the portion of code that your visitors will see. You will need to publish this code using the php artisan module:publish {name} command.

Publish

All custom modules will need to have their Publishes folder published in order to have their code added to you app. We've wrapped this into one simple command:

php artisan module:publish

Running this will place the files in the matching folders in your app. So if you want to have files put in migrations make sure your Publishes folder has a migration file in a directory like this:

Publishes/database/migrations/migration_file.php

If you switch themes in Grafite CMS you will need to republish your module. The views are added directly into the themes.

License

Grafite CMS is open-sourced software licensed under the MIT license

Redactor License

Grafite has an OEM licence for the use of Redactor in the Grafite CMS package. You are fully welcome to use Grafite CMS package and incorporate it into any apps you build, you are permitted to offer those apps as SaaS or other products. However, you are not entitle to strip out parts of Redactor and resell them, please see this license for more information

Bug Reporting and Feature Requests

Please add as many details as possible regarding submission of issues and feature requests

Disclaimer

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

cms's People

Contributors

aimeos avatar coolgoose avatar danrovito avatar ericvanjohnson avatar galenskap avatar gregolai avatar jonasof avatar jonathan-bird avatar joshua-p-williams avatar leorossi avatar mlantz avatar mnwalker avatar nimmer avatar podluzhnyi avatar sgrayme avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cms's Issues

Class 'App\Models\Team' not found

Hi,

I'm playing around with the cms and tried to do a user invite - I got Class 'App\Models\Team' not found as I send it - seems to be thrown in User->isTeamAdmin(null) in UserInviteRequest.php line 17

Any idea what I should do?

Complete call stack
`

in HasRelationships.php line 487
at Model->newRelatedInstance('App\\Models\\Team') in HasRelationships.php line 304
at Model->belongsToMany('App\\Models\\Team') in User.php line 93
at User->teams() in HasAttributes.php line 400
at Model->getRelationshipFromMethod('teams') in HasAttributes.php line 386
at Model->getRelationValue('teams') in HasAttributes.php line 316
at Model->getAttribute('teams') in Model.php line 1234
at Model->__get('teams') in User.php line 114
at User->isTeamAdmin(null) in UserInviteRequest.php line 17
at UserInviteRequest->authorize()
at call_user_func_array(array(object(UserInviteRequest), 'authorize'), array()) in BoundMethod.php line 29
at BoundMethod::Illuminate\Container\{closure}() in BoundMethod.php line 87
at BoundMethod::callBoundMethod(object(Application), array(object(UserInviteRequest), 'authorize'), object(Closure)) in BoundMethod.php line 31
at BoundMethod::call(object(Application), array(object(UserInviteRequest), 'authorize'), array(), null) in Container.php line 531
at Container->call(array(object(UserInviteRequest), 'authorize')) in FormRequest.php line 186
at FormRequest->passesAuthorization() in ValidatesWhenResolvedTrait.php line 21
at FormRequest->validate() in FormRequestServiceProvider.php line 31
at FormRequestServiceProvider->Illuminate\Foundation\Providers\{closure}(object(UserInviteRequest), object(Application)) in Container.php line 997
at Container->fireCallbackArray(object(UserInviteRequest), array(object(Closure))) in Container.php line 961
at Container->fireAfterResolvingCallbacks('App\\Http\\Requests\\UserInviteRequest', object(UserInviteRequest)) in Container.php line 946
at Container->fireResolvingCallbacks('App\\Http\\Requests\\UserInviteRequest', object(UserInviteRequest)) in Container.php line 617
at Container->resolve('App\\Http\\Requests\\UserInviteRequest') in Container.php line 567
at Container->make('App\\Http\\Requests\\UserInviteRequest') in Application.php line 702
at Application->make('App\\Http\\Requests\\UserInviteRequest') in RouteDependencyResolverTrait.php line 79
at ControllerDispatcher->transformDependency(object(ReflectionParameter), array()) in RouteDependencyResolverTrait.php line 47
at ControllerDispatcher->resolveMethodDependencies(array(), object(ReflectionMethod)) in RouteDependencyResolverTrait.php line 27
at ControllerDispatcher->resolveClassMethodDependencies(array(), object(UserController), 'postInvite') in ControllerDispatcher.php line 40
at ControllerDispatcher->dispatch(object(Route), object(UserController), 'postInvite') in Route.php line 203
at Route->runController() in Route.php line 160
at Route->run() in Router.php line 559
at Router->Illuminate\Routing\{closure}(object(Request)) in Pipeline.php line 30
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Admin.php line 39
at Admin->handle(object(Request), object(Closure)) in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in SubstituteBindings.php line 41
at SubstituteBindings->handle(object(Request), object(Closure)) in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Authenticate.php line 43
at Authenticate->handle(object(Request), object(Closure)) in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in VerifyCsrfToken.php line 65
at VerifyCsrfToken->handle(object(Request), object(Closure)) in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in ShareErrorsFromSession.php line 49
at ShareErrorsFromSession->handle(object(Request), object(Closure)) in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in StartSession.php line 64
at StartSession->handle(object(Request), object(Closure)) in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in EncryptCookies.php line 59
at EncryptCookies->handle(object(Request), object(Closure)) in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Pipeline.php line 102
at Pipeline->then(object(Closure)) in Router.php line 561
at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 520
at Router->dispatchToRoute(object(Request)) in Router.php line 498
at Router->dispatch(object(Request)) in Kernel.php line 174
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request)) in Pipeline.php line 30
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in TransformsRequest.php line 30
at TransformsRequest->handle(object(Request), object(Closure)) in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in TransformsRequest.php line 30
at TransformsRequest->handle(object(Request), object(Closure)) in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in ValidatePostSize.php line 27
at ValidatePostSize->handle(object(Request), object(Closure)) in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 46
at CheckForMaintenanceMode->handle(object(Request), object(Closure)) in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Pipeline.php line 102
at Pipeline->then(object(Closure)) in Kernel.php line 149
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 116
at Kernel->handle(object(Request)) in index.php line 53

`

S3 upload issue

Hey there,

When I setup with S3 I keep on getting a pesky little error "The location field is required"

I have entered the proper key/secret/bucket into my .env file but not sure how to bypass this.

Only thing I am thinking is that I am working locally through homestead but can't see why that would cause an issue.

Using [ within any html tag in the entry field of a Page throws formmaker error when attempting to reload page to edit

  1. Create new (or edit old page)
  2. use the character [ in the Content/entry field in a paragraph or div tag ex: <p>[</p> or <div>[</div> or even <p>hello world [</p>
  3. save page
  4. after save, page will reload and throw error below. Page loads and functions as expected after editing DB and removing [ character

ErrorException in InputMaker.php line 303:
Trying to get property of non-object (View: /usr/share/nginx/laravel/vendor/yab/quarx/src/Views/modules/pages/edit.blade.php)
in InputMaker.php line 303
at CompilerEngine->handleViewException(object(ErrorException), '1') in PhpEngine.php line 44
at PhpEngine->evaluatePath('/usr/share/nginx/laravel/storage/framework/views/cf8fcedabda85f5680edb3db1e656d2955113277.php', array('__env' => object(Factory), 'app' => object(Application), 'errors' => object(ViewErrorBag), 'page' => object(Page))) in CompilerEngine.php line 59
at CompilerEngine->get('/usr/share/nginx/laravel/vendor/yab/quarx/src/Views/modules/pages/edit.blade.php', array('__env' => object(Factory), 'app' => object(Application), 'errors' => object(ViewErrorBag), 'page' => object(Page))) in View.php line 149
at View->getContents() in View.php line 120
at View->renderContents() in View.php line 85
at View->render() in Response.php line 45
at Response->setContent(object(View)) in Response.php line 201
at Response->__construct(object(View)) in Router.php line 1017
at Router->prepareResponse(object(Request), object(View)) in Router.php line 643
at Router->Illuminate\Routing{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing{closure}(object(Request)) in Quarx.php line 21
at Quarx->handle(object(Request), object(Closure)) in Pipeline.php line 137
at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing{closure}(object(Request)) in SubstituteBindings.php line 41
at SubstituteBindings->handle(object(Request), object(Closure)) in Pipeline.php line 137
at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing{closure}(object(Request)) in Authenticate.php line 43
at Authenticate->handle(object(Request), object(Closure)) in Pipeline.php line 137
at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing{closure}(object(Request)) in VerifyCsrfToken.php line 65
at VerifyCsrfToken->handle(object(Request), object(Closure)) in Pipeline.php line 137
at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing{closure}(object(Request)) in ShareErrorsFromSession.php line 49
at ShareErrorsFromSession->handle(object(Request), object(Closure)) in Pipeline.php line 137
at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing{closure}(object(Request)) in StartSession.php line 64
at StartSession->handle(object(Request), object(Closure)) in Pipeline.php line 137
at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) in Pipeline.php line 137
at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing{closure}(object(Request)) in EncryptCookies.php line 59
at EncryptCookies->handle(object(Request), object(Closure)) in Pipeline.php line 137
at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing{closure}(object(Request)) in Pipeline.php line 104
at Pipeline->then(object(Closure)) in Router.php line 644
at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 618
at Router->dispatchToRoute(object(Request)) in Router.php line 596
at Router->dispatch(object(Request)) in Kernel.php line 267
at Kernel->Illuminate\Foundation\Http{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing{closure}(object(Request)) in CheckForMaintenanceMode.php line 46
at CheckForMaintenanceMode->handle(object(Request), object(Closure)) in Pipeline.php line 137
at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing{closure}(object(Request)) in Pipeline.php line 104
at Pipeline->then(object(Closure)) in Kernel.php line 149
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 116
at Kernel->handle(object(Request)) in index.php line 54

1/2
ErrorException in InputMaker.php line 303:
Trying to get property of non-object
in InputMaker.php line 303
at HandleExceptions->handleError('8', 'Trying to get property of non-object', '/usr/share/nginx/laravel/vendor/yab/formmaker/src/Services/InputMaker.php', '303', array('config' => array('populated' => true, 'name' => 'entry', 'class' => 'form-control redactor', 'config' => array('type' => 'text', 'class' => 'redactor', 'alt_name' => 'Content'), 'inputTypes' => array('number' => 'number', 'integer' => 'number', 'float' => 'number', 'decimal' => 'number', 'boolean' => 'number', 'string' => 'text', 'email' => 'text', 'varchar' => 'text', 'file' => 'file', 'image' => 'file', 'datetime' => 'date', 'date' => 'date', 'password' => 'password', 'textarea' => 'textarea', 'select' => null, 'checkbox' => null, 'checkbox-inline' => null, 'radio' => null, 'radio-inline' => null), 'inputs' => array(), 'object' => object(Page), 'objectValue' => 'fsefsfesfesfe

[
', 'placeholder' => 'Content', 'inputType' => 'text'), 'final' => null, 'nameProperties' => array('fsefsfesfesfe
', '
'), 'property' => '', 'realProperty' => '')) in InputMaker.php line 303
at InputMaker->prepareObjectValue(array('populated' => true, 'name' => 'entry', 'class' => 'form-control redactor', 'config' => array('type' => 'text', 'class' => 'redactor', 'alt_name' => 'Content'), 'inputTypes' => array('number' => 'number', 'integer' => 'number', 'float' => 'number', 'decimal' => 'number', 'boolean' => 'number', 'string' => 'text', 'email' => 'text', 'varchar' => 'text', 'file' => 'file', 'image' => 'file', 'datetime' => 'date', 'date' => 'date', 'password' => 'password', 'textarea' => 'textarea', 'select' => null, 'checkbox' => null, 'checkbox-inline' => null, 'radio' => null, 'radio-inline' => null), 'inputs' => array(), 'object' => object(Page), 'objectValue' => 'fsefsfesfesfe
[
', 'placeholder' => 'Content', 'inputType' => 'text')) in InputMaker.php line 234
at InputMaker->inputStringGenerator(array('populated' => true, 'name' => 'entry', 'class' => 'form-control redactor', 'config' => array('type' => 'text', 'class' => 'redactor', 'alt_name' => 'Content'), 'inputTypes' => array('number' => 'number', 'integer' => 'number', 'float' => 'number', 'decimal' => 'number', 'boolean' => 'number', 'string' => 'text', 'email' => 'text', 'varchar' => 'text', 'file' => 'file', 'image' => 'file', 'datetime' => 'date', 'date' => 'date', 'password' => 'password', 'textarea' => 'textarea', 'select' => null, 'checkbox' => null, 'checkbox-inline' => null, 'radio' => null, 'radio-inline' => null), 'inputs' => array(), 'object' => object(Page), 'objectValue' => 'fsefsfesfesfe
[
', 'placeholder' => 'Content', 'inputType' => 'text')) in InputMaker.php line 99
at InputMaker->inputStringPreparer(array('populated' => true, 'name' => 'entry', 'class' => 'form-control redactor', 'config' => array('type' => 'text', 'class' => 'redactor', 'alt_name' => 'Content'), 'inputTypes' => array('number' => 'number', 'integer' => 'number', 'float' => 'number', 'decimal' => 'number', 'boolean' => 'number', 'string' => 'text', 'email' => 'text', 'varchar' => 'text', 'file' => 'file', 'image' => 'file', 'datetime' => 'date', 'date' => 'date', 'password' => 'password', 'textarea' => 'textarea', 'select' => null, 'checkbox' => null, 'checkbox-inline' => null, 'radio' => null, 'radio-inline' => null), 'inputs' => array(), 'object' => object(Page), 'objectValue' => 'fsefsfesfesfe
[
', 'placeholder' => 'Content', 'inputType' => 'text')) in InputMaker.php line 79
at InputMaker->create('entry', array('type' => 'text', 'class' => 'redactor', 'alt_name' => 'Content'), object(Page), 'form-control', false, true) in FormMaker.php line 180
at FormMaker->fromObject(object(Page), array('title' => array('type' => 'string'), 'url' => array('type' => 'string'), 'entry' => array('type' => 'text', 'class' => 'redactor', 'alt_name' => 'Content'), 'seo_description' => array('type' => 'text', 'alt_name' => 'SEO Description'), 'seo_keywords' => array('type' => 'string', 'class' => 'tags', 'alt_name' => 'SEO Keywords'), 'is_published' => array('type' => 'checkbox', 'alt_name' => 'Published'), 'published_at' => array('type' => 'string', 'class' => 'datetimepicker', 'alt_name' => 'Publish Date', 'after' => ''))) in Facade.php line 237
at Facade::__callStatic('fromObject', array(object(Page), array('title' => array('type' => 'string'), 'url' => array('type' => 'string'), 'entry' => array('type' => 'text', 'class' => 'redactor', 'alt_name' => 'Content'), 'seo_description' => array('type' => 'text', 'alt_name' => 'SEO Description'), 'seo_keywords' => array('type' => 'string', 'class' => 'tags', 'alt_name' => 'SEO Keywords'), 'is_published' => array('type' => 'checkbox', 'alt_name' => 'Published'), 'published_at' => array('type' => 'string', 'class' => 'datetimepicker', 'alt_name' => 'Publish Date', 'after' => '')))) in cf8fcedabda85f5680edb3db1e656d2955113277.php line 57
at FormMaker::fromObject(object(Page), array('title' => array('type' => 'string'), 'url' => array('type' => 'string'), 'entry' => array('type' => 'text', 'class' => 'redactor', 'alt_name' => 'Content'), 'seo_description' => array('type' => 'text', 'alt_name' => 'SEO Description'), 'seo_keywords' => array('type' => 'string', 'class' => 'tags', 'alt_name' => 'SEO Keywords'), 'is_published' => array('type' => 'checkbox', 'alt_name' => 'Published'), 'published_at' => array('type' => 'string', 'class' => 'datetimepicker', 'alt_name' => 'Publish Date', 'after' => ''))) in cf8fcedabda85f5680edb3db1e656d2955113277.php line 57
at include('/usr/share/nginx/laravel/storage/framework/views/cf8fcedabda85f5680edb3db1e656d2955113277.php') in PhpEngine.php line 42
at PhpEngine->evaluatePath('/usr/share/nginx/laravel/storage/framework/views/cf8fcedabda85f5680edb3db1e656d2955113277.php', array('__env' => object(Factory), 'app' => object(Application), 'errors' => object(ViewErrorBag), 'page' => object(Page))) in CompilerEngine.php line 59
at CompilerEngine->get('/usr/share/nginx/laravel/vendor/yab/quarx/src/Views/modules/pages/edit.blade.php', array('__env' => object(Factory), 'app' => object(Application), 'errors' => object(ViewErrorBag), 'page' => object(Page))) in View.php line 149
at View->getContents() in View.php line 120
at View->renderContents() in View.php line 85
at View->render() in Response.php line 45
at Response->setContent(object(View)) in Response.php line 201
at Response->__construct(object(View)) in Router.php line 1017
at Router->prepareResponse(object(Request), object(View)) in Router.php line 643
at Router->Illuminate\Routing{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing{closure}(object(Request)) in Quarx.php line 21
at Quarx->handle(object(Request), object(Closure)) in Pipeline.php line 137
at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing{closure}(object(Request)) in SubstituteBindings.php line 41
at SubstituteBindings->handle(object(Request), object(Closure)) in Pipeline.php line 137
at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing{closure}(object(Request)) in Authenticate.php line 43
at Authenticate->handle(object(Request), object(Closure)) in Pipeline.php line 137
at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing{closure}(object(Request)) in VerifyCsrfToken.php line 65
at VerifyCsrfToken->handle(object(Request), object(Closure)) in Pipeline.php line 137
at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing{closure}(object(Request)) in ShareErrorsFromSession.php line 49
at ShareErrorsFromSession->handle(object(Request), object(Closure)) in Pipeline.php line 137
at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing{closure}(object(Request)) in StartSession.php line 64
at StartSession->handle(object(Request), object(Closure)) in Pipeline.php line 137
at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) in Pipeline.php line 137
at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing{closure}(object(Request)) in EncryptCookies.php line 59
at EncryptCookies->handle(object(Request), object(Closure)) in Pipeline.php line 137
at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing{closure}(object(Request)) in Pipeline.php line 104
at Pipeline->then(object(Closure)) in Router.php line 644
at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 618
at Router->dispatchToRoute(object(Request)) in Router.php line 596
at Router->dispatch(object(Request)) in Kernel.php line 267
at Kernel->Illuminate\Foundation\Http{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing{closure}(object(Request)) in CheckForMaintenanceMode.php line 46
at CheckForMaintenanceMode->handle(object(Request), object(Closure)) in Pipeline.php line 137
at Pipeline->Illuminate\Pipeline{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing{closure}(object(Request)) in Pipeline.php line 104
at Pipeline->then(object(Closure)) in Kernel.php line 149
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 116
at Kernel->handle(object(Request)) in index.php line 54

[ReflectionException] Class Yab\Quarx\Models\ does not exist

I'm doing Quarx installation with simple setup. Everything works fine, both frontend and admin panel working. But, when i trying to list routes there is this error :

[2016-11-03 11:53:34] local.ERROR: ReflectionException: Class Yab\Quarx\Models\ does not exist in /opt/www/linc/vendor/laravel/framework/src/Illuminate/Container/Container.php:749
Stack trace:
#0 /opt/www/linc/vendor/laravel/framework/src/Illuminate/Container/Container.php(749): ReflectionClass->__construct('Yab\Quarx\Model...')
#1 /opt/www/linc/vendor/laravel/framework/src/Illuminate/Container/Container.php(644): Illuminate\Container\Container->build('Yab\Quarx\Model...', Array)
#2 /opt/www/linc/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(709): Illuminate\Container\Container->make('Yab\Quarx\Model...', Array)
#3 /opt/www/linc/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(106): Illuminate\Foundation\Application->make('Yab\Quarx\Model...', Array)
#4 /opt/www/linc/vendor/yab/quarx/src/Controllers/ApiController.php(17): app('Yab\Quarx\Model...')
#5 [internal function]: Yab\Quarx\Controllers\ApiController->__construct(Object(Illuminate\Http\Request))
#6 /opt/www/linc/vendor/laravel/framework/src/Illuminate/Container/Container.php(794): ReflectionClass->newInstanceArgs(Array)
#7 /opt/www/linc/vendor/laravel/framework/src/Illuminate/Container/Container.php(644): Illuminate\Container\Container->build('Yab\Quarx\Contr...', Array)
#8 /opt/www/linc/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(709): Illuminate\Container\Container->make('Yab\Quarx\Contr...', Array)
#9 /opt/www/linc/vendor/laravel/framework/src/Illuminate/Routing/Route.php(203): Illuminate\Foundation\Application->make('Yab\Quarx\Contr...')
#10 /opt/www/linc/vendor/laravel/framework/src/Illuminate/Routing/Route.php(316): Illuminate\Routing\Route->getController()
#11 /opt/www/linc/vendor/laravel/framework/src/Illuminate/Routing/Route.php(278): Illuminate\Routing\Route->controllerMiddleware()
#12 /opt/www/linc/vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteListCommand.php(141): Illuminate\Routing\Route->gatherMiddleware()
#13 /opt/www/linc/vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteListCommand.php(118): Illuminate\Foundation\Console\RouteListCommand->getMiddleware(Object(Illuminate\Routing\Route))
#14 /opt/www/linc/vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteListCommand.php(88): Illuminate\Foundation\Console\RouteListCommand->getRouteInformation(Object(Illuminate\Routing\Route))
#15 /opt/www/linc/vendor/laravel/framework/src/Illuminate/Foundation/Console/RouteListCommand.php(75): Illuminate\Foundation\Console\RouteListCommand->getRoutes()
#16 [internal function]: Illuminate\Foundation\Console\RouteListCommand->fire()
#17 /opt/www/linc/vendor/laravel/framework/src/Illuminate/Container/Container.php(508): call_user_func_array(Array, Array)
#18 /opt/www/linc/vendor/laravel/framework/src/Illuminate/Console/Command.php(169): Illuminate\Container\Container->call(Array)
#19 /opt/www/linc/vendor/symfony/console/Command/Command.php(256): Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#20 /opt/www/linc/vendor/laravel/framework/src/Illuminate/Console/Command.php(155): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#21 /opt/www/linc/vendor/symfony/console/Application.php(820): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#22 /opt/www/linc/vendor/symfony/console/Application.php(187): Symfony\Component\Console\Application->doRunCommand(Object(Illuminate\Foundation\Console\RouteListCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#23 /opt/www/linc/vendor/symfony/console/Application.php(118): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#24 /opt/www/linc/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(121): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#25 /opt/www/linc/artisan(35): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#26 {main}

Will this affecting my installation?

Thank you

Styling is missing

After installing I get home page to load but without any styling. Running gulp didn't help...

Any help?

Failed to create role

Trying to create a new role and get this error with the following inputs:

Name: editor
Label: Editor

Error:
Exception in RoleService.php line 107:
Failed to create role

public function create($input)
{
    try {
        $input['permissions'] = implode(',', array_keys($input['permissions']));
        return $this->model->create($input);
    } catch (Exception $e) {
        throw new Exception("Failed to create role", 1);
    }
}

I'm logged in as the root admin

How to add custom fields to default quarx modules ?

I want to add custom fields to default quarx modules, like menu, example: i want to add field for menu position.
How do i override the $fillable array from the default Menu module, to also save info from my new added field ?

Fresh install with translations table error

Fresh install of Laravel 5.3 and I get this error when loading the home page. I followed the github setup to a tee and still get this error. I look in the translations table and there is no rows in the table. Should there be?

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '>"$.url" = ? limit 1' at line 1 (SQL: select * from translations where entity_type = Yab\Quarx\Models\Page and entity_data->"$.url" = home limit 1)

Small issue when trying to save content and leaving the content field empty (noticed when saving pages)

Hello.

While trying to save multilanguage pages, if i do not put any data in the "Content" field it saves the content in the DB but when it redirects the page i got an error

Method Yab\Quarx\Services\Normalizer::__toString() must return a string value (View: /var/www/html/laravel-logicr/resources/views/vendor/quarx/modules/blogs/edit.blade.php)

this is done because in that method in the __toString() method it just returns the value of the field

return $this->value;

but in the DB it is saved as null, for me the fastes solution was to change that line in

return $this->value ? $this->value : '';

so that it return an empty string if it receives a null value.

Have a good day

Saving an image through the dashboard in S3, does not display the image

I am trying to set up Quarx to use S3 for the blog/pages images but when I add an image to the dashboard,
it gets uploaded normally to S3 but when I go to view the images (modules/images/index.blade.php), i get blanks.

the FileService::filePreview($image->location) provides a relative path to the image instead of the absolute path that S3 would be.

Shouldn't there be Storage::disk(Config::get('quarx.storage-location', 'local')) prepending the previewed filename?

Thank you in advance.

L5.4 Error when editing Pages/Blogs with empty content

ErrorException in HtmlGenerator.php line 41:
Method Yab\Quarx\Services\Normalizer::__toString() must return a string value (View: /Users/Od3n/Documents/Git/quarx/resources/views/vendor/quarx/modules/blogs/edit.blade.php)

CSS Design Issue

Thanks for publishing this great package. I just installed this package on a fresh laravel installation and followed the simple method to install.
Now i am facing a number of issues in the theme both in front and backend. Issues are marked on the attached images.

website
quarx events

Error at setup: ActivateUserEmail error

Fresh install on new Laravel app: running setup gives [ErrorException] Undefined variable: ActivateUserEmail. DB is not created yet so seems to be an error in the drop email routine.

Also pls check line 254 in Setup.php.

FormMaker

I'm just evaluating this CMS, but thought I'd report this issue... when using the FormMaker->getTableColumns... the getDoctrineColumn needs to be passed the DB prefix... I changed line 368 in FormMaker.php, and it fixed it for me... but I don't know that it's the correct fix.

I'm using Homestead (php 7.1) on Windows.. my Laravel db prefix is set.. the Quarx db prefix is blank.

foreach ($tableColumns as $column) { if (!in_array($column, $badColumns)) { $type = DB::connection($this->connection)->getDoctrineColumn(DB::connection($this->connection)->getTablePrefix().$table, $column)->getType()->getName(); $tableTypeColumns[$column]['type'] = $type; } }

On another note, where should I ask questions... I don't see a forum

Having difficulty installing and using with Laravel Spark.

I was able to install Quarx on a new installation of Laravel Spark, but when I ran the "php artisan quark:setup" command I got conflicts of duplicate database table names that conflict with the Laravel Spark such as "teams". I am attempting to namespace all the new Quarx tables with "quarx_" to differentiate the new tables with the Spark ones. All tables will be different except they will share the "users" table. I am not sure how successful I will be in getting it all to work together.

Bug on theme:generate

When I try to generate a new theme I get this error

These files will be generated


 Are you sure you want to generate this theme? (yes/no) [no]:
 > yes

Copying /resources/themes/mytheme/assets/js/theme.js...
Copying /resources/themes/mytheme/assets/sass/_basic.scss...
Copying /resources/themes/mytheme/assets/sass/_theme.scss...
Copying /resources/themes/mytheme/blog/all.blade.php...
Copying /resources/themes/mytheme/blog/featured-template.blade.php...
Copying /resources/themes/mytheme/blog/show.blade.php...
Copying /resources/themes/mytheme/events/all.blade.php...
Copying /resources/themes/mytheme/events/calendar.blade.php...
Copying /resources/themes/mytheme/events/date.blade.php...
Copying /resources/themes/mytheme/events/featured-template.blade.php...
Copying /resources/themes/mytheme/events/show.blade.php...
Copying /resources/themes/mytheme/faqs/all.blade.php...
Copying /resources/themes/mytheme/gallery/all.blade.php...
Copying /resources/themes/mytheme/gallery/show.blade.php...
Copying /resources/themes/mytheme/layout/master.blade.php...
Copying /resources/themes/mytheme/pages/all.blade.php...
Copying /resources/themes/mytheme/pages/featured-template.blade.php...
Copying /resources/themes/mytheme/pages/home.blade.php...
Copying /resources/themes/mytheme/pages/show.blade.php...
Copying /resources/themes/mytheme/partials/navigation.blade.php...


  [ErrorException]                                                                                                                                                                       
  file_get_contents(/Users/leonardo/Workspace/quarx-project/resources/views/quarx/themes/mytheme/assets/sass/_theme.scss): failed to open stream: No such file or directory

I can find that file instead in this location ./resources/themes/mytheme/assets/sass/_theme.scss
I don't have any resources/vuews/quarx directory.

menu entries for a new created module

I'm not really sure that is an issue but from what i understand:

  • in vendor/yab/quarx/src/Services/ModuleService.php i have a foreach which render modules from quarx module directory(which is ok because my modules are there) and after this load what i have in config('quarx.modules')(which i'm not sure what contain; can't see in config/quarx.php). i believe what i have in config on active-core-modules are automatically loaded.
    the idea is if i create a module, in admin menu appear two times(at least for CRUD modules). no time now to see exactly. maybe i'm wrong.

Errors with Mix with install under L5.4?

I tried creating a fresh install of Quarx using the Simple Setup method on a clean Laravel 5.4 installation and run into errors when running the last step, npm run dev:

npm run dev
ERROR Failed to compile with 3 errors
error in ./resources/assets/sass/app.scss
Module build failed:
@import "node_modules/bootstrap-sass/assets/stylesheets/bootstrap";
^
File to import not found or unreadable: node_modules/bootstrap-sass/assets/stylesheets/bootstrap.
Parent style sheet: /{my-file-path}/resources/themes/default/assets/sass/_theme.scss
in /{my-file-path}/resources/themes/default/assets/sass/_theme.scss (line 7, column 1)
@ ./resources/assets/sass/app.scss 4:14-248
@ multi ./resources/assets/js/app.js ./resources/assets/sass/app.scss

Any ideas why this might be happening?

Thank you!

Error at module creation

When i'm trying to create a module, i receive an error and after this Laravel is broken

Steps that i've made:

- fresh laravel install

- composer require yab/quarx

- add 'Yab\Quarx\QuarxProvider::class,' to my Provider

- php artisan vendor:publish --provider="Yab\Quarx\QuarxProvider"

- run php artisan quarx:setup (+ npm install)

- i added this to my composer "Quarx\\": "quarx/",

- i made composer dump-autoload -o and composer install

- the package works ok until now

- i want to make a new module

- i changed the ModuleCrud.php on line 202 to get the right file("P" letter as i said on previous issue)

- then i run artisan module:crud Groups

- i receive 
   *** You will need to publish your module to make it available to your vistors:
    php artisan module:publish Groups
    Add this to your app/Providers/RouteServiceProver.php in the mapWebRoutes method:
    require base_path('routes/groups-web.php');
    You may wish to add this as your testing database
    'testing' => [ 'driver' => 'sqlite', 'database' => ':memory:', 'prefix' => '' ],
    Module for Group is done. ***

- question: need to have routes/groups-web.php? because is not generated by the command

- from this point I CAN'T START laravel. any command return this:
  ***  PHP Fatal error:  Class '\Quarx\Modules\Groups\GroupsModuleProvider' not found in /var/www/html/laravelQuarx/vendor/laravel/framework/src/Illuminate/Foundation/Application.php on line 606
   [Symfony\Component\Debug\Exception\FatalErrorException]       
        Class '\Quarx\Modules\Groups\GroupsModuleProvider' not found  ***

-  also i saw that in kernel.php on protected $routeMiddleware i have two times the
       *** 'quarx' => \App\Http\Middleware\Quarx::class,
	'quarx-api' => \App\Http\Middleware\QuarxApi::class,
	'quarx-analytics' => \Yab\Quarx\Middleware\QuarxAnalytics::class,
	'quarx-language' => \App\Http\Middleware\QuarxLanguage::class,
	'admin' => \App\Http\Middleware\Admin::class,
	'active' => \App\Http\Middleware\Active::class,***

not sure that is ok. i guess one time is ok.

Add fields to models

Hi
First of all I am not very expert of Laravel, so please be kind :)
I'm trying to extend the Page model, adding a category_id which will refer to a new model I am going to create.
I found the quickest way is to add to the quarx.forms.page config and the form was rendered successfully. But then how I can interact with the model, to allow the new field to be stored (and retrieved) ? What is the best practice here?

Thanks!

Menu issues: menu admin error & front display menu links to unpublished pages

  • in admin when accessing a menu that has a link to a deleted page, error returns because it tries to display a non-existent page (PageService.php line 49) in links menu listing;
  • after adding a menu link to an unpublished page in admin, the unpublished page is displayed in frontend menu; also, i don't think the pages are retrieved according to publish date being < now() because their content is not displayed when accessing the page (404)

Hiding Modules from navbar

Is there a method for not displaying modules in the live site navbar? I want to be able to use the module generator, but not add that created module to the navbar.

I dont know add Quarx to my app

I have my existing aplication and I want to add Quarx. I tried that without success.
Can you write simple tutorial or make it simple?

Pixabay 500 error on insert

Hey there,

I seem to be getting 500 errors on the insert function for the stock images selection.

I can search and go through pages of the images totally fine, but on selection of an image nothing happens on the front-end.

In my console I get these errors

pixabay-errors

Composer Fails on graham-campbell/markdown Dependency

I tried to do a fresh install of Quarx and hit a composer conflict:

Your requirements could not be resolved to an installable set of packages.

Problem 1
- yab/quarx v2.2.0 requires graham-campbell/markdown ^6.1 -> satisfiable by graham-campbell/markdown[v6.1.0].
- yab/quarx v2.2.1 requires graham-campbell/markdown ^6.1 -> satisfiable by graham-campbell/markdown[v6.1.0].
- yab/quarx v2.2.10 requires graham-campbell/markdown ^6.1 -> satisfiable by graham-campbell/markdown[v6.1.0].
- yab/quarx v2.2.11 requires graham-campbell/markdown ^6.1 -> satisfiable by graham-campbell/markdown[v6.1.0].
- yab/quarx v2.2.12 requires graham-campbell/markdown ^6.1 -> satisfiable by graham-campbell/markdown[v6.1.0].
- yab/quarx v2.2.2 requires graham-campbell/markdown ^6.1 -> satisfiable by graham-campbell/markdown[v6.1.0].
- yab/quarx v2.2.3 requires graham-campbell/markdown ^6.1 -> satisfiable by graham-campbell/markdown[v6.1.0].
- yab/quarx v2.2.4 requires graham-campbell/markdown ^6.1 -> satisfiable by graham-campbell/markdown[v6.1.0].
- yab/quarx v2.2.5 requires graham-campbell/markdown ^6.1 -> satisfiable by graham-campbell/markdown[v6.1.0].
- yab/quarx v2.2.6 requires graham-campbell/markdown ^6.1 -> satisfiable by graham-campbell/markdown[v6.1.0].
- yab/quarx v2.2.7 requires graham-campbell/markdown ^6.1 -> satisfiable by graham-campbell/markdown[v6.1.0].
- yab/quarx v2.2.8 requires graham-campbell/markdown ^6.1 -> satisfiable by graham-campbell/markdown[v6.1.0].
- yab/quarx v2.2.9 requires graham-campbell/markdown ^6.1 -> satisfiable by graham-campbell/markdown[v6.1.0].
- Conclusion: don't install graham-campbell/markdown v6.1.0
- Installation request for yab/quarx ^2.2 -> satisfiable by yab/quarx[v2.2.0, v2.2.1, v2.2.10, v2.2.11, v2.2.12, v2.2.2, v2.2.3, v2.2.4, v2.2.5, v2.2.6, v2.2.7, v2.2.8, v2.2.9].

New install: setup exception 'We were unable to generate your profile, please try again later.'

Hi, running php artisan quarx:setup gives the above exception. After proceeding with yarn and gulp I was able to login, route to /dashboard wil give an exception too:

ReflectionException in Container.php line 749: Class active does not exist

Going back to the homepage, and use the button on the bottom the /quarx/dashboard route is used, and will show the dashboard just fine. Login routing issue?

Demo site does not work

I tried logging in to the demo site to check it out. Seems the credentials provided are not working

Exception on demo

hi,

When i'm trying to login into your demo i got this error when I'm redirecting to "https://demo.quarxcms.com/quarx/dashboard" :

ErrorException in BaseProvider.php line 178:
file_get_contents(): php_network_getaddresses: getaddrinfo failed: Name or service not known (View: /home/forge/demo.quarxcms.com/releases/1/vendor/yab/quarx/src/Views/dashboard/analytics-internal.blade.php)

When I refresh It's work.

Class Quarx\PagesController does not exist

Not sure what the issue is here. I followed all the install steps. I created a page in the admin, but when trying to view the page, I get this exception.

Everything looks right. The route is there using the Quarx namespace, and the PagesController is under the Quarx directory and references the Quarx namespace.

I am running Laravel 5.4

screen shot 2017-04-01 at 7 55 39 pm

Image selector for pages not working

The image selector for pages doesn't seem to be working as expected...

My Images page looks like this:
screenshot 8
However when I go to a page and click the image input button for content I see this:
screenshot 9

Is this what the expected behavior is? Right now it is only showing the single stock image that I selected.

Unable to save content for template blocks

After saving (updating) a page, the content of my template blocks is not saved in the database. The 'blocks' field contains a json of empty values (which means that something is saved at some point):

{"main":"","test":""} ('main' and 'test' are the block slugs)

The data ('block_main' and 'block_test') is there while the form is being submitted.
It is just not saved in the database.

Do you know which might be the issue..?

Error when deploying to production server.

I am getting the following error when trying to run composer update on the production server. It is save php and composer version as dev server. This class does indeed exist.

[2017-05-01 18:48:30] local.ERROR: Symfony\Component\Debug\Exception\FatalThrowableError: Class '\Quarx\Modules\Affiliates\AffiliatesModuleProvider' not found in /data/www/sites/staging.loanmls.com/releases/20170501165423/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:612
Stack trace:
#0 /data/www/sites/staging.loanmls.com/releases/20170501165423/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(570): Illuminate\Foundation\Application->resolveProvider('\Quarx\Modules\...')
#1 /data/www/sites/staging.loanmls.com/releases/20170501165423/vendor/yab/quarx/src/Providers/QuarxModuleProvider.php(24): Illuminate\Foundation\Application->register('\Quarx\Modules\...')
#2 /data/www/sites/staging.loanmls.com/releases/20170501165423/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(574): Yab\Quarx\Providers\QuarxModuleProvider->register()
#3 /data/www/sites/staging.loanmls.com/releases/20170501165423/vendor/yab/quarx/src/QuarxProvider.php(134): Illuminate\Foundation\Application->register(Object(Yab\Quarx\Providers\QuarxModuleProvider))
#4 /data/www/sites/staging.loanmls.com/releases/20170501165423/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(574): Yab\Quarx\QuarxProvider->register()
#5 /data/www/sites/staging.loanmls.com/releases/20170501165423/vendor/laravel/framework/src/Illuminate/Foundation/ProviderRepository.php(75): Illuminate\Foundation\Application->register(Object(Yab\Quarx\QuarxProvider))
#6 /data/www/sites/staging.loanmls.com/releases/20170501165423/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(549): Illuminate\Foundation\ProviderRepository->load(Array)
#7 /data/www/sites/staging.loanmls.com/releases/20170501165423/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/RegisterProviders.php(17): Illuminate\Foundation\Application->registerConfiguredProviders()
#8 /data/www/sites/staging.loanmls.com/releases/20170501165423/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(208): Illuminate\Foundation\Bootstrap\RegisterProviders->bootstrap(Object(Illuminate\Foundation\Application))
#9 /data/www/sites/staging.loanmls.com/releases/20170501165423/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(267): Illuminate\Foundation\Application->bootstrapWith(Array)
#10 /data/www/sites/staging.loanmls.com/releases/20170501165423/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(114): Illuminate\Foundation\Console\Kernel->bootstrap()
#11 /data/www/sites/staging.loanmls.com/releases/20170501165423/artisan(35): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#12 {main}

FAQ page from theme generator requests missing widget

The template for the FAQ page at PublishedAssets/Theme/resources/themes/themeTemplate/faqs/all.blade.php requests the 'sample' widget on line 9. The widget is not created initially, so the page will fail in QuarxService when it accesses a null object. A more graceful fail would be nice, but perhaps a simpler solution might be creating the sample widget as part of the theme generation.

Missing TeamController

Great package. After installing Quarx (simple mode) on Laravel 5.3 via Homestead, the follow error comes up with route:list command:

[ReflectionException] Class App\Http\Controllers\TeamController does not exist

Add a module crud does not work

I am creating a new module with php artisan module:crud Line . The whole file tree is created and I can see the new menu entry in the backend. Although if I click on the "Lines" entry, I get this error

ReflectionException in Route.php line 280:
Class Quarx\Modules\Lines\Controllers\LineController does not exist
in Route.php line 280
at ReflectionMethod->__construct('Quarx\Modules\Lines\Controllers\LineController', 'index') in Route.php line 280
at Route->signatureParameters('Illuminate\Database\Eloquent\Model') in Router.php line 857
at Router->substituteImplicitBindings(object(Route)) in Router.php line 842
at Router->substituteBindings(object(Route)) in Router.php line 825
at Router->findRoute(object(Request)) in Router.php line 691
at Router->dispatchToRoute(object(Request)) in Router.php line 675
at Router->dispatch(object(Request)) in Kernel.php line 246
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 44
at CheckForMaintenanceMode->handle(object(Request), object(Closure))
at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 136
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103
at Pipeline->then(object(Closure)) in Kernel.php line 132
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 99
at Kernel->handle(object(Request)) in index.php line 54 

Issue in quarx:setup

In Quarx/src/Console/ThemePublish.php, on line 53, the trailing slash after 'public' breaks the setup. If I remove it, the setup seems to continue fine.

Issue when using command to create a new module

Hello.
I am on version 2.3.4 and when I am running the commands : php artisan module:crud "name" or php artisan module:make "name", i receive this error :

file_get_contents(/var/www/html/quarxLaravel/vendor/yab/quarx/src/Console/../Templates/CRUD/provider.txt): failed to open stream: No such file or directory

I found the file that the error talks about in the

/vendor/yab/quarx/src/Templates/CRUD/Provider.txt 

The error appears because the name of the file called is with a lower case "p" and the actual file name is with a higher case "P".
The File is called in ModuleCrud.php:202

Thanks

Class PagesController does not exist

Class PagesController does not exist. I've created this into an existing site and I get this error on some pages including home page, and trying to view live page after creating one.

PagesController looks to sit under app/Http/Controllers/Quarx. I've also set the Quarx namespace in the composer.json under psr-4 as instructions.

Any ideas what I'm doing wrong?

ReflectionException in Container.php line 719:
Class Quarx\PagesController does not exist
in Container.php line 719
at ReflectionClass->__construct('Quarx\\PagesController') in Container.php line 719
at Container->build('Quarx\\PagesController') in Container.php line 598
at Container->resolve('Quarx\\PagesController') in Container.php line 567
at Container->make('Quarx\\PagesController') in Application.php line 702
at Application->make('Quarx\\PagesController') in Route.php line 217
at Route->getController() in Route.php line 736
at Route->controllerMiddleware() in Route.php line 697
at Route->gatherMiddleware() in Router.php line 572
at Router->gatherRouteMiddleware(object(Route)) in Router.php line 552
at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 520
at Router->dispatchToRoute(object(Request)) in Router.php line 498
at Router->dispatch(object(Request)) in Kernel.php line 174
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request)) in Pipeline.php line 30
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Debugbar.php line 51
at Debugbar->handle(object(Request), object(Closure)) in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 46
at CheckForMaintenanceMode->handle(object(Request), object(Closure)) in Pipeline.php line 148
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Pipeline.php line 102
at Pipeline->then(object(Closure)) in Kernel.php line 149
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 116
at Kernel->handle(object(Request)) in index.php line 53

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.