CI 묻고 답하기

제목 cart 한글 오류 있네요
글쓴이 냐옹어흥 작성시각 2016/03/24 05:34:14
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 15292   RSS
cart 클래스를 잘 이용하는 도중..

물품명을 한글로 바꾸고자 하였으나...
disallowed key characters. 이라는 에러 메세지와 함께 출력이 되질 않는데요.

영어로 값을 넘기면 아무 문제가 없습니다. 한글로 보내면 cart 클래스가 출력이 안됩니다.
데이터베이스에서 받아오는 값은 한글로 잘 출력되고, 일반 화면에서도 잘 출력이 됩니다.
단지 장바구니(cart)가 문제인것 같네요...



$config['permitted_uri_chars'] =  '가-힣a-z 0-9~%.:_\-';

이렇게 고쳤음에도 안되길래 몇시간에 걸쳐 검색한 결과...

 

웅파님의 답글로...

 

cart library 파일을 열어보시면 아래와 같이 상품명에 대한 정규표현식이 있습니다.한글이 가능하도록 가-힣을 a 앞에 넣어주시면 될 것 같네요.var $product_name_rules = '\.\:\-_ a-z0-9'; // alpha-numeric, dashes, underscores, colons or periods그리고 상품가격이 0일 경우도 소스를 보니 가격앞에 붙은 0을 자동 제거해주는 부분이 있어서0일 경우 null로 처리가 되어 에러가 나는 것 같네요.$items['price'] = trim(preg_replace('/(^[0]+)/i', '', $items['price']));이 부분을 개선하거나 주석처리 하시면 될 것 같네요.

 

이러한 글을 보았습니다.

 

참고로 전 ci 2.x를 쓰고 php는 5.5 버젼입니다.

 

문제는 cart library 파일을 찾을수가 없다는 겁니다...

 

구글링해도 cart library를 찾을수 없는데요.

 

도와주세요. 웅파님^^

 

 

 다음글 결제 모듈에서 결과창 넘어갈때 post 처리 (7)
 이전글 CI 의 Encryptions 로 encrypt 한 d... (3)

댓글

냐옹어흥 / 2016/03/24 05:36:50 / 추천 0
<!DOCTYPE HTML>
<html>
	<head>
		<title>Shop</title>
		<meta charset = "utf-8">
			<style>
				
				
				#products ul{text-align:center; float:left;
						    list-style-type: none; margin:0px;}
				#products li{width:250px; height:400px;padding:4px; margin:8px; 
						  border:1px solid #ddd; background-color:#eee;
						  -moz-border-radius:4px; -webkit-boder-radius:4px;}
				#products .name{font-size:15px; margin:5px;}
				#products .price{margin:5px;}
				#products .option{margin:5px;}

				#cart table{width:450px; border-collapse: collapse; text-align: right; border:1px solid #ddd; background-color: #eee;}
				#cart .remove{text-align: right; }
				#cart .remove a{color:red; border:1px solid #ccc;}
				#cart th{border-bottom:1px solid #aaa;}
				#cart td{text-align: right;}
				#cart caption{font-size:25px; height:30px; text-align: center;}
				#qtyqty {text-align: center;}

				.papa {text-align: center; font-size:20px;}
				.option {text-align: center;}
				
				


			</style>
	</head>

	<body>

//상품 목록 시작//
<div class="span12">
<div class="span1"></div>
	<?php
	if(!$this->session->userdata('master_login'))
	{ ?>
	<div class="span1"></div>
	<?php } ?>
	<?php
			
	$yaho=$shop_detail['0'];

	?>

		<div id="products"class="span2">
		
			<ul >

					<li class="span1">

						<?php echo form_open('/index.php/mainpage/add'); ?>

							<div class="name">
								[<?php echo $yaho->name; ?>]
							</div>

							<div class="thumb">
								<a href="/index.php/mainpage/shop_detail/<?php echo $yaho->id ?>"><?php echo img(array(
								
									'src' => 'images/'.$yaho->image,
									'class' => 'thumb',
									'alt' => $yaho->name
								
								)); ?></a>
							</div>


							<div class="image">	
								<?php echo form_hidden('image', $yaho->image); ?>
							</div>

							<div class="get">	
								<?php echo form_hidden('get', $yaho->product_id); ?>
							</div>


							<div class="price">
								$<?php echo $yaho->price; ?>							
							</div>


							<div class="qtyqty ">

								
									<form action="/index.php/mainpage/add/" method="post">
									<input type="text" name="qty" class="input-mini" placeholder="수량" value="1" style="text-align:right;">개
									
									
								
								

							</div>


							<div class="option">
								<?php 

								if($yaho->option_name){
									echo form_label($yaho->option_name, 'option_'.$yaho->id);
									echo form_dropdown(
										
											$yaho->option_name,
											$yaho->option_values,
											NULL,
											'id="option_'.$yaho->id.'"' 
									
										);
								
								}else{ ?>
									옵션없음
									<select name="job">
										<option value="">옵션없음</option>

									</select>
								<?php }
								?>							
							</div>


						<?php echo form_hidden('id', $yaho->id); ?>
						<input type="submit" value="장바구니 담기" class="btn btn-mini btn-primary">
						
						<?php echo form_close();
						?>

					</li>
					

			</ul>
			   
				
		</div>






<div class="span4">
<?php echo $yaho->detail; ?>
</div>



//장바구니 시작//


		<?php 
	if($cart=$this->cart->contents()){
?>

	<div class="span3">
		<div id="cart" >

			<table rules="rows">
				<caption>Shopping Cart</caption>
				<thead>
					<tr>
						<th width="110">물품명</th>
						<th width="110">옵션</th>
						<th width="50">개수</th>
						<th width="100">가격</th>
						<th width="80">삭제</th>

					</tr>
				</thead>

				<?php foreach($cart as $item){ ?>
						<tr>
							<td><?php echo $item['name']; ?></td>

							<td>
								<?php 
								if($this->cart->has_options($item['rowid'])){
								
																	foreach($this->cart->product_options($item['rowid']) as $option=>$value){
																		echo $option.": <em>".$value."</em>";}

																				   }
								?>
							</td>


							<td><?php echo $item['qty']; ?></td>

							<td><?php echo $item['subtotal']; ?></td>

							<td class="remove">
								<form action="/index.php/mainpage/remove_detail/<?php echo $item['rowid'] ?>" method="post">
									<input type="hidden" name="getss" value="<?php echo $detail_id; ?>">
									<input type="submit" value="X">
								</form>
								
							</td>
						</tr>
				<?php } ?>

				<tr class="total">
					
					<td></td>
					<td colspan="2"><strong>Total</strong></td>
					<td>$<?php echo $this->cart->total(); ?></td>
				</tr>

				<tr class="buy">
					
					<td></td>
					<td></td>
					<td colspan="2"><strong>즐거운 쇼핑 되셨나요?</strong></td>
					<td>
						<a href="/index.php/mainpage/basket/" class="btn btn-mini btn-primary">장바구니</a>						
					</td>
				</tr>
			</table>
			</div>
		</div>
<?php
}
?>

		<div class="span12"></div>







</div>
</div>
	</body>

</html>

혹시 장바구니 출력하는 부분에 문제가 있는걸까요?

냐옹어흥 / 2016/03/24 05:59:03 / 추천 0

덧 붙여서...

카트(cart)에 저장하기 직전까지는 모든것이 다 잘 됩니다.

 

단지 카트(cart)에 저장이 되질 않습니다..

변종원(웅파) / 2016/03/24 10:53:18 / 추천 0

system/libraries/Cart.php 파일입니다.

따로 구현하시는게 좋습니다. 저도 전에 사용하려다 제약과 기능부족으로 자체 구현해서 사용했습니다.

참고로 codeigniter 4 에서는 삭제될 예정인 클래스입니다.

냐옹어흥 / 2016/03/24 11:57:19 / 추천 0
웅파님 감사합니다.
초반 장바구니 이해하고 실행하는데 시간이 꽤나 걸렸었는데, 결국 이 녀석이 말썽이네요^^;;;
자체 구현 역시도 세션 배열에 담았다가 빼는 방식으로 하면 되겠죠?
한번 도전해봐야겠군요^^