Доработать сопутствующие товары

Цена договорная • наличный расчёт, безналичный расчёт, электронные деньги
24 августа 2015, 14:44 • 1 отклик • 27 просмотров
Здравствуйте.
Сайт на фраемворке
kohana 3.1.

Нужно доработать (сопутствующие товары).

На сайте около 2000 товаров, заходим в товар, далее нажимаем кнопку добавить сопутствующие товары,
далее идет список товаров, список весь товаров, ставим галочку на тот
товар который будет прикреплен к данному товару, товар будет
сопутствующим.

Нужно реализовать поиск по названию товаров, чтобы проще можно было находить товар.
Так же реализовать пагинацию.
Вывести фотографию товара, вывести категорию товара. и стоимость товара.

Все это есть в товарах, фото, цена, категория товара, все показывается и работает, так же есть пагинация, я хочу реализовать все это в сопутствующих товарах.

Скидываю акшионы что бы вы понимали что и как и смогли сформулировать стоимость за данную услугу.

акшион сопутствующих товаров.

public function action_related()
{
$id = (int) $this->request->param('id');
$products = ORM::factory('product')->where('id','!=',$id)->order_by("sorts","ASC")->find_all();
$ralated = ORM::factory('related')->where('product_id','=',$id)->find_all()->as_array('id','rproduct_id');
$pArray = array();
foreach ($products as $product):
$pArray[$product->id]['prname'] = $product->prname;
if (in_array($product->id, $ralated))
{
$pArray[$product->id]['related'] = true;
}
else
{
$pArray[$product->id]['related'] = false;
}
endforeach;
$product = ORM::factory('product', $id);
if(!$product->loaded()) {
$this->request->redirect('admin/products');
}
$content = View::factory('admin/product/related', array(
'products' => $pArray,
'id' => $id,
'product' => $product,
));

$this->template->page_title = 'Сопутствующие товары';
$this->template->content = $content;
}

есть еще вот такой код
public function action_setrelated()
{
$id = $_POST['data']['rproduct_id'];

$ralated = ORM::factory('related')->where('rproduct_id','=',$id)->find();
$item = ORM::factory('related', $ralated->id);
if($item->loaded())
{
$item->delete();
}
else
{
$data = $_POST['data'];
$products = ORM::factory('related');
$products->values($data);
$products->save();
}
die;
}

Из товаров поиск по названию товаров, скопировал и добавил в шаблон сопутствующих товаров.

<div style="display:inline-block">
<label><strong>Поиск по названию товара</strong></label>
<form method=post action="/admin/products/related">
<input name=cat type=hidden value="<?=$id?>">
<input name=keyword type=text value='' style="width:350px" placeholder="Поиск по названию товара">
<input style="margin-top:-11px;" type='submit' value='Найти' name="submit">
</form></div>

<form method=post action="/admin/products/"> я заменил на <form method=post action="/admin/products/related">

При заходе в сопутствующие товары, формируется ссылка с id продукта. когда заходим в продукт и в нем нажимаем добавить сопутствующий товар, ссылка такого вида где все товары, которые можно по клику проставляя галочки прикрепить к продукту.

сайт.ru/admin/products/related/9550
9550 - ид продукта к которому прикрепляем сопутствующие товары.

Значит при поиске, нужно чтобы ид добавлялся в конце поиска.

Я так понимаю как то так <form method=post action="/admin/products/related/<?=$id?>">

Ввожу название товара в поиск и нажимаю поиск, ничего не происходит, остаюсь там же на странице. и вижу весь товар.

Коды которые выводят информацию в админке где все товары

вывод категории товара
<code lang="php">
<?php
if($product->category)
{
foreach($category as $cat)
{

if($cat->id == $product->category){
?><a href="/admin/products/index/<?php echo $product->category ?>"><?php echo $cat->name ?></a><?
break;
} else {
}
}
}
?>

вывод фотки товара
<code lang="php">
<img src="/media/uploads/<?=isset($product->main_img->image) ? $product->main_img->image : 'noimage.jpg' ?>" style="width:100px">

вывод стоимости товара
<?php echo Helper_Cenaot::get_cenaot_name($product->cenaot);?>

<?php if($product->price):?>
<strong>
<?php /*echo $product->price;*/ echo number_format($product->price, 0, ' ', '.')?>
</strong> <span>руб</span>
<?php else:?>
<div style="display:none"><p style="font-size:14px; margin: 0; padding: 0;" title="Цена Договорная">ДОГОВОРНАЯ</p></div>
<?php endif;?>


акшион вывода товаров в разделе все товары
public function action_index() {

$id = (int) $this->request->param('id');
$settings_limit = $setting =ORM::factory('setting')->where('id', '=', '1')->find()->admin_per_page;
$limit = Session::instance()->get('limit', $settings_limit);
$category = ORM::factory('category')->order_by('id','ASC')->find_all();

if($category){
$categories = array();
foreach($category as $cat){
$categories[$cat->id] = $cat->name;
}
}
if(empty($id))
{
$count = ORM::factory('product')->count_all();
$pagination = Pagination::factory(array('total_items' => $count, 'items_per_page' => $settings_limit));
$products = ORM::factory('product')->limit($pagination->items_per_page)->offset($pagination->offset)->order_by("sorts", "DESC")->find_all();

if(isset($_POST['submit'])){
$data = Arr::extract($_POST, array('cat','keyword'));
$key = $data['keyword'];
if(!empty($data['cat'])){
$products = ORM::factory('product')->where('category','=',$data['cat'])->and_where('prname','LIKE',"%$key%")->order_by("sorts", "DESC")->find_all();
}else{
$products = ORM::factory('product')->where('prname','LIKE',"%$key%")->order_by("sorts", "DESC")->find_all();
}
$id = $data['cat'];
$pagination = "";
}

$content = View::factory('admin/product/v_product_index', array(
'products' => $products,
'pagination' => $pagination,
'category' => $category,
'categories' => $categories,
'id' => $id,
));
}
else
{
$selected_cat = ORM::factory('category', $id);
$this->_get_tree($selected_cat);
$products = DB::select()->from('products');
foreach ($this->_tree as $cat_id)
{
$products->or_where('category', '=', $cat_id);
}
$count = (count($products->execute()->as_array()));
$pagination = Pagination::factory(array('total_items' => $count, 'items_per_page' => $limit));
$products->limit($pagination->items_per_page)->offset($pagination->offset)->order_by("sorts", "DESC");
$products = $products->execute()->as_array();

$content = View::factory('admin/product/v_product_index_category', array(
'products' => $products,
'pagination' => $pagination,
'category' => $category,
'count' => $count,
'categories' => $categories,
'id' => $id,
));

}

$this->template->page_title = 'Товары';
$this->template->content = $content;
}