Vous êtes sur la page 1sur 18

http://squaresquirrel.

ro/web/creating-an-online-store-withsymfony-part-1-documentation/#project_description Creating an Online Store with Symfony Part 1: Documentation


This is work in progress Content 1. 2. 3. 4. 5. 6. 7. Project Description Requirements and Technologies Modules (Frontend and Backend) Objects and Database Frontend Sections Backend Sections Graphic Design

1. Project Description
Project aims to create a full-featured ecommerce solution. Backend administration area will include classic features like managing product catalog, categories, standard and custom product attributes, managing sales, users and part of the website content, also viewing reports. Will not manage inventory (stock) at this time. Front website should be elegant, span the entire width of the browser and emphasize quick access to product info (image, price, attributes). Will feature large images, smooth transitions and simple interactions. All information should be clearly and easily available (product list, product info, cart, user profile info, categories) through as few user actions as possible (all info on the same page, few page reloads). Note: All code (including comments) will be written in English, the forms in the administration area will have English names, but error messages, some mockups and all designs will be translated to Romanian.

2. Requirements and Technologies


Project will use: Database: MySQL Server: Linux / Apache / PHP 5 Framework: symfony 1.4 with Doctrine

3. Modules

3.1 Frontend Symfony Modules


product Deals with product pages. Listings for home page, category page, search results page (grid or list) and also product details page. Should include templates for: - product list (grid) - product details user Most likely developed on top of a plugin such as sfGuard. Will additionally include templates for: - user profile (view and edit profile details, shipping and billing address, company information) - order history - order details page - cart (developed as a separate module or component?) - checkout - wishlist - reviews page Additional pages (Policy, Help Page, About Us, etc)

3.2 Backend Symfony Modules


order category product attribute review tag user page report config rule

4. Objects and Database


4.1 Objects
User Database Table: sf_guard_user Table Fields: id, first_name, last_name, email_address, username, algorithm, salt, password, is_active, is_super_admin, last_login, created_at, updated_at UserProfile Database Table: profiles Table Fields: id, about Product Database Table: products Table Fields: id, title, description, description_full, code, brand_id, price, price_promo, is_active, created_at, updated_at ProductImages Database Table: images Table fields: id, product_id, image Category Database Table: categories Table Fields: id, title, category_id, description, image, is_active, created_at, updated_at ProductCategory Database Table: product_to_category Table Fields: product_id, category_id Attribute Database Table: attributes Table Fields: id, name, code, attribute_set_id, is_system, is_active, scope AttributeSet Database Table: attribute_sets Table Fields: id, name ProductAttribute Database Table: product_to_attribute Table Fields: product_id, attribute_id Brand Database Table: brands Table Fields: id, name, is_active

Order Database Table: orders Table Fields: id, user_id, billing_address, shipping_address, amount, created_at, status OrderProducts Database Table: orders_to_products Table Fields: order_id, product_id Review Page Report Rule Config

4.2 Database

Once Ive created the database diagram (using MySQL Workbench), I used a plugin called Doctrine Export to generate a YAML database schema. Changes were made in YAML in various places, such as: class names (capitalized or changed slightly), removed created_at and updated_at fields and replaced them with the simpler Timestampable: ~, also added Sluggable fields where necessary. Some relationships had to be rewritten.

5. Frontend Sections

TODO: list of frontend sections (home, product list, product details, category page, search, filters, cart, wishlist, user login, user register, user profile, checkout, etc)

6. Backend Sections
6.1 Orders
6.1 a) Order list Display fields: id, user name, order date, total price, order status Description: lists orders made through website (completed checkouts) ordered by date. Order row links to order details (6.2 b). User name links to user details, status can be changed to: Pending, Processing, On Hold, Completed, Canceled. List can be filtered, searched, ordered.

6.1 b) Order details Display fields: id, user details, order date, billing address, shipping address, products list, prices, total price, order date, order status. Description: Full details regarding order, all info should be clearly visible within the same screen.

6.2 Catalog
6.2.1 Products 6.2.1 a) Products list Display fields: id, product code, product image, product title, product type, category, price, stock, visibility Description: Lists products in the Catalog. Basic CRUD operations clearly available. Hover over image thumbnail displays larger image preview. List can be filtered, searched, ordered.

6.2.1 b) Product Details Display fields: title, product code, system attributes (see 6.2.3), prices, images, short description, full description, stock, categories, brand, type, reviews, tags, custom attributes set, visibility, etc. Description: Edit product details, page should be clearly separated into a few sections: Basic (system) Attributes, Category Selection, Custom Attributes, Images, Reviews, Tags.

6.2.2 Categories 6.2.2 a) Categories Hierarchy Description: Nested view of categories, features simple drag & drop. Each category also displays number of products attached to it.

6.2.2 b) Add/Edit Category Display fields: title, URL, description, image, page title, included in navigation, visibility, link to view attached products. Description: Form for adding and editing categories. Upon completion, category is added as a child of the root category. Admin needs to enter 6.2.2 (a) section to establish hierarchy.

6.2.3 Attributes 6.2.3 a) Attributes List Display fields: code, name, visibility, type (system or custom), scope (where attribute is listed), set (parent group of attribute see 6.2.3 (c)) Description: Attributes are defined as snippets of additional information about a product. There are system attributes, which cannot be changed or deleted (such as price, promo price, description, stock, etc) and custom attributes, which are defined by the admin and are grouped into sets. Admin can attach set (or individual attributes?) to product. Example: The set Cameras (internal name) might group custom attributes such as memory, lens type, connectivity and megapixels. When the admin attaches the set Cameras to the product Sony Cybershot ZX420D, he can then manually fill in the custom attributes for this product. List can be filtered, searched, ordered.

6.2.3 b) Add/Edit Attribute Display fields: code, name, visibility, set, mode (could be text, textarea, dropdown, radios, etc) Description: Admin creates attributes to be later attached to products. Example: code camera_megapixels, name Resolution (MP), mode text field.

6.2.3 c) Attribute Sets Display fields: Name (internal) Description: Add sets (groups) and then attach attributes in section 6.2.3 (b) above.

6.2.4 Reviews Display fields: product title, review text (excerpt), user, date, rating, status. Description: Lists user product reviews, admin can edit, change status from pending to approved or delete review. List can be filtered, searched, ordered.

6.2.5 Tags TO DO: define tag management system

6.3 Customers
6.3 a) Customer (user) list Display fields: name, email, phone, address, created date, last login date, number of orders, number of completed orders, total amount of completed orders. Description: Lists users registered within the system and basic contact and order details. Clicking user links to full user details page. List can be filtered, searched, ordered.

6.3 b) Edit User Display fields: name, email, account creation date, last login date, shipping address, billing address. Description: Edit user details, admin can view/edit all details. Link is available for Order List by selected user.

6.4 CMS (Pages)


6.4 a) Pages list Display fields: name, URL, content (excerpt) 6.4 b) Add/Edit Page Display fields: page name, page title (in website), URL, content (HTML editor), visibility. Description: Admin can create pages with HTML content, define name and page title.

6.5 Reports
TO DO (common reports should include sales, products, users, reviews, search terms)

6.6 Config
Admin configuration options. TO DO: define options

6.7 Rules
TO DO: define mechanism

7. Graphic Design
The idea is to have a grid that spans the entire width of the browser as the main module of the website. Grid would normally contain products but can also accomodate categories, filters, shopping cart, wishlist, even the footer.

See part 2 of the tutorial for more: Creating an online store with symfony Part 2: Design
This entry was posted on Friday, December 17th, 2010 at 10:52 and is filed under Web. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

3 Responses to Creating an Online Store with Symfony Part 1: Documentation

Vous aimerez peut-être aussi